0

誰かが私にgeventの不可解な行動を手伝ってくれる?これが私のコードです:
https ://gist.github.com/3956734 。

使い方を知りたいgevent.pool。私は一度に1つのグリーンレットをスポーンします。グリーレットは10秒間スリープするだけです。10秒間だけ実行されるはずですが、現実的な状況では20秒間実行されます。

私のコードの何が問題になっていますか?geventのドキュメントを読みましたが、まだわかりません。

4

1 に答える 1

1

あなたのコードのコメントによると:

#ids_set = {'945453','1909279'}

あなたの質問によると、あなたのグリーンレットは10秒間眠るだけです。

これらの両方が当てはまると仮定すると、コードは...

 while ids_set is not None:
    id = ids_set.pop()
    print 'now id is', id
    pool.spawn(download_content_test,int(id))
    pool.join()

...各スポーン後にプールに参加しているため、20秒間実行する必要があります。つまり、コードはこれを実行しています:spawn、join(10秒待機)、spawn、join(10秒待機)。

pool.join()あなたがやろうとしていたのは、whileループの外側を持っていることだったと思います。その後、10秒だけ待機します。

于 2012-11-02T03:25:01.027 に答える