1

私はこのような機能を実装しようとしています:

サーバーを実行してから、ユーザーがサーバーにアクセスしてジョブを送信します(ジョブを順番に実行する必要があります)。各ジョブの完了には時間がかかり、各ジョブのステータス(すでにダウンロードされたツイートの数など)がたくさんあるので、ユーザーにステータスを提示したいと思います。私はジョブオブジェクトをクラスとして実装しています。

Class Job:
   def __init__():
      initial status
   def do_download():
      do download 
   def report_status():
      return [self.tweets_downloaded, self.bad_tweets...]

ただし、サーバーの実行中に「report_status()」を呼び出すことができないため、ここに閉じ込められていますdo_download()。誰か提案がありますか?それは有り難いです。

結局、スレッドを使用して「do_download」関数を実行することになりました。そして、メインスレッドで「report_status」を呼び出すだけで、ジョブの実行状況のステータスがわかります。

4

2 に答える 2

2

Celeryまたは別のタスク キューイング システムを使用します。すべてのジョブは個別のプロセスで実行され (スレッド セーフや GIL を気にする必要はありません)、中央のデータ ストアを必要な頻度で更新できます。

于 2012-10-05T22:24:53.813 に答える
0

report_status でスキャンする status.txt ファイルを更新するスレッドで、長時間実行されるジョブを実行します

于 2012-10-05T22:22:09.100 に答える