リモート API からのデータの取得を並列化しようとしています。リモート API には一括機能がないため、必要なオブジェクトごとに個別の GET 要求を作成する必要があります。
ミックスに gevent を追加しました。うまくいくこともありますが、同じリクエスト セットをもう一度試すと、100 件中 50 件が失敗します。
Traceback (most recent call last):
...
File "/Users/---/venv/lib/python2.7/site-packages/httplib2/__init__.py", line 1570, in request
(response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "/Users/---/venv/lib/python2.7/site-packages/httplib2/__init__.py", line 1317, in _request
(response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "/Users/---/venv/lib/python2.7/site-packages/httplib2/__init__.py", line 1258, in _conn_request
raise ServerNotFoundError("Unable to find the server at %s" % conn.host)
ServerNotFoundError: Unable to find the server at my.remote.host
<Greenlet at 0x10c6eacd0: function_name(<Object1>, <Object2>, u'zebra', True)> failed with ServerNotFoundError
これを解決する方法について何か考えはありますか? これは、要求が多すぎて速すぎた結果ですか? もしそうなら、グリーンレットの数を抑える簡単な方法はありますか?