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 回答