1. ホーム

[Errno 8] nodenameまたはservnameが提供されないか、不明です。

2022-02-12 02:01:08

python2.7 

イベント 

gevent concurrency を使って http リクエストを起動する。

python独自のDNS標準ライブラリを使って

しばしばエラーが発生する

[Errno 8] nodenameまたはservnameが提供されないか、わからない。

いくつかの記事を確認したところ、DNSの解決は激しい並行処理の下で問題がある可能性があります。

回避策 python の DNS 解決標準ライブラリを使用する代わりに、標準ライブラリを置き換える gevent の組み込み DNS 解決モジュールを使用します。

(以下の patch_all() は、gevent が標準ライブラリのセットを置き換えてくれるときに実装される予定です)。

from gevent import monkey;monkey.patch_all()

この時点で、[Errno 8] nodename nor servname provided, or not known問題は、DNSが最初に解決するときに一度だけ発生します。