誰かが私にgeventの不可解な行動を手伝ってくれる?これが私のコードです:
https ://gist.github.com/3956734 。
使い方を知りたいgevent.pool
。私は一度に1つのグリーンレットをスポーンします。グリーレットは10秒間スリープするだけです。10秒間だけ実行されるはずですが、現実的な状況では20秒間実行されます。
私のコードの何が問題になっていますか?geventのドキュメントを読みましたが、まだわかりません。
あなたのコードのコメントによると:
#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秒だけ待機します。