4

ねえ、初めての投稿、私は本当にhttplib2に行き詰まっています。私はdivintopython3.orgからそれを読んでいますが、タイムアウト機能については何も言及していません。ドキュメントを調べましたが、タイムアウト int を設定する機能だけが表示されますが、単位が指定されていません (秒? ミリ秒? なしの場合のデフォルトは何ですか?) これは私が持っているものです (チェックするコードもあります)応答が何であるかを再試行しますが、一度しか試行されません)

h = httplib2.Http('.cache', timeout=None)
for url in list:
    response, content = h.request(url)
    more stuff...

したがって、Httpオブジェクトは任意の時間まで残りますが、同じサーバーから大量のページをダウンロードしています.しばらくすると、ページの取得でハングします. エラーはスローされず、ページでハングアップするだけです。それで、私は試します:

h = httplib2.Http('.cache', timeout=None)
for url in list:
    try:
        response, content = h.request(url)
    except:
        h = httplib2.Http('.cache', timeout=None)
    more stuff...

しかし、その後、毎回別の Http オブジェクトを再作成します (「例外」パスをたどります)... 有効期限が切れて別のオブジェクトを作成するまで、同じオブジェクトを取得し続ける方法がわかりません。また、個々のリクエストにタイムアウトを設定する方法はありますか?

助けてくれてありがとう!

4

2 に答える 2

4

バグにより、 httplib2 は、バージョン 0.7.5 (2012-08-28)まで、2 を掛けた 秒数でタイムアウトを測定しました。

于 2012-07-24T16:11:37.503 に答える
1

タイムアウトを 1 に設定すると、それが 1 ミリ秒なのか 1 秒なのかすぐにわかります。

ある場合に h.request(url) でハングする場合、別のケースでハングする必要がある場合、try/except が何を解決する必要があるかわかりません。

そのコードでメモリが不足すると、httplib2 は適切にガベージ コレクションを取得しません。循環参照があるか (上記のようには見えませんが)、httlib2 のバグである可能性があります。

于 2010-01-30T08:46:52.720 に答える