2

Django アプリの一部として大規模な (600,000 レコード以上) データベースがあります。このアプリは、さまざまなオープン データ Web サービスから収集された情報を保存します。ときどき (1 週間に 1 回かそれ以下)、これらの Web サービスをチェックして、データが更新されていないか確認する必要があります。

これを行うための python スクリプトを作成しました。動作しますが、非常に遅く、完了する前にこのエラーが発生することがよくあります: ConnectionError: [Errno 104] Connection reset by peer

いくつかの実験に基づいて、このプロセスが完了するまでに数日かかると思います。スクリプトを最適化する以外に、この種の長時間実行される python プロセスを処理する最良の方法は何ですか?

4

1 に答える 1

3

セロリを見てください。これにより、バックグラウンドジョブを複数のワーカー(異なるマシンで実行することもできます)に簡単に割り当てることができます。また、失敗した場合にジョブを再度キューに入れて、後で再試行することもできます...

スクリプトを最適化するには、マルチプロセッシングを使用するか、geventなどの非同期ライブラリを使用することを検討する必要があります(特に、Webサービスの呼び出しなどの多くのI / Oを実行するジョブがある場合)。これにより、多数の同時接続を処理できます(最大100s / 1000s)並列。

于 2013-01-24T19:49:34.913 に答える