我在Erlang的inet_res
上遇到了一些麻煩。我試圖從我的Elixir shell以及從我的Erlang shell中使用它,但我有意外的行爲。有時候,我能夠查找域,有時我也沒有返回值:使用`inet_res`庫的藥劑錯誤
iex(1)> :inet_res.lookup('disneur.me', :in, :mx)
[]
iex(2)> :inet_res.lookup('disneur.me', :in, :mx)
[]
iex(3)> :inet_res.lookup('disneur.me', :in, :mx)
[{1, 'aspmx.l.google.com'}, {10, 'alt3.aspmx.l.google.com'},
{10, 'alt4.aspmx.l.google.com'}, {5, 'alt1.aspmx.l.google.com'},
{5, 'alt2.aspmx.l.google.com'}]
正如你可以看到前兩次我叫它,它返回一個空數組和THRID時間,它回報了良好的價值。
我試圖在第四參數retry: 5
也timeout: 10
增加,但它並不能幫助:
:inet_res.lookup('disneur.me', :in, :mx, timeout: 10, retry: 5)
[]
iex(2)> :inet_res.lookup('disneur.me', :in, :mx, timeout: 10, retry: 5)
[{1, 'aspmx.l.google.com'}, {10, 'alt3.aspmx.l.google.com'},
{10, 'alt4.aspmx.l.google.com'}, {5, 'alt1.aspmx.l.google.com'},
{5, 'alt2.aspmx.l.google.com'}]
我也直接從二郎殼試過,我有完全一樣的行爲:
1> inet_res:lookup("disneur.me", in, mx, [{timeout, 10}, {retry, 5}]).
[]
2> inet_res:lookup("disneur.me", in, mx, [{timeout, 10}, {retry, 5}]).
[]
3> inet_res:lookup("disneur.me", in, mx, [{timeout, 10}, {retry, 5}]).
[]
4> inet_res:lookup("disneur.me", in, mx, [{timeout, 10}, {retry, 5}]).
[{1,"aspmx.l.google.com"},
{10,"alt3.aspmx.l.google.com"},
{10,"alt4.aspmx.l.google.com"},
{5,"alt1.aspmx.l.google.com"},
{5,"alt2.aspmx.l.google.com"}]
你知道我爲什麼有這種不可預知的行爲嗎?我是否以錯誤的方式使用這個庫?
編輯: 有關信息,我嘗試與其他域(即:gmail.com),我有同樣的問題。其他人也在自己的計算機上和不同的位置嘗試了這些代碼。在Circle-CI上我也有同樣的失敗。
EDIT2: 從討論中,我對斯萊克(花好月圓隊)
troush [8:45 PM]拷貝粘貼它爲我的域工作的罰款。也許這個問題領域具體?
kdisneur [8:47 PM] 你嘗試了幾次嗎?我的意思是殺死你的會議和重試,因爲有時它有效,有時它不會。
troush [下午8時54]
iex(35)> :inet_res.lookup('google.com', :in, :mx)
[{30, 'alt2.aspmx.l.google.com'}, {40, 'alt3.aspmx.l.google.com'},
{50, 'alt4.aspmx.l.google.com'}, {10, 'aspmx.l.google.com'},
{20, 'alt1.aspmx.l.google.com'}]
iex(36)> :inet_res.lookup('google.com', :in, :mx)
[{40, 'alt3.aspmx.l.google.com'}, {50, 'alt4.aspmx.l.google.com'},
{10, 'aspmx.l.google.com'}, {20, 'alt1.aspmx.l.google.com'},
{30, 'alt2.aspmx.l.google.com'}]
iex(37)> :inet_res.lookup('google.com', :in, :mx)
[{50, 'alt4.aspmx.l.google.com'}, {10, 'aspmx.l.google.com'},
{20, 'alt1.aspmx.l.google.com'}, {30, 'alt2.aspmx.l.google.com'},
{40, 'alt3.aspmx.l.google.com'}]
troush [下午8點55分]也許一個連接isssue。
kdisneur [8:56 PM]是的,當你在一個會議,它的工作一次,我有同樣的結果比你。這就是爲什麼我要求重新啓動一個新的Elixir外殼
troush [8:59 PM]哦,好吧,我明白了。是的,我在廣泛的新iex會議上討論了這個問題。空的回覆,但只在你的域名上。在gmail/google.com上它可以正常工作
troush [9:01]而且我的自定義域名也出現同樣的問題。所以這裏有一些問題:simple_smile:抱歉disonanse
所以我不認爲它來自我的網絡或特定域。我認爲這是關於我使用這個庫的方式。
感謝您的幫助
我在這兩個'iex'和'erl'嘗試這樣做,它每次都爲我工作。 –
你在嘗試之間開始了一個新的'iex'或'erl'會話嗎?我的意思是,如果我開始一個會話,並且工作正常,如果我反覆嘗試同一個呼叫(在同一個會話中),它將繼續工作,但是如果我停止會話,啓動一個新會話,有時會工作,有時它不會。 –
是的,我明白你的意思了。再次嘗試顯示結果有時是空的。我建議將超時選項提高到30. –