我正在尝试实现这样的功能:
我会运行服务器,然后用户会来到服务器并提交他们的工作(我只需要按顺序运行作业)。每个工作都需要很长时间才能完成,并且每个工作都有很多状态(比如已经下载了多少推文等),我希望将状态呈现给用户。我正在将作业对象实现为一个类,即
Class Job:
def __init__():
initial status
def do_download():
do download
def report_status():
return [self.tweets_downloaded, self.bad_tweets...]
但是,我有点被困在这里,因为在服务器运行do_download()
时我无法调用'report_status()'。有人有什么建议吗?我很感激。
我最终使用线程来执行“do_download”功能。在主线程中只需调用“report_status”,它就会告诉我作业的工作状态。
答案 0 :(得分:2)
使用Celery或其他任务排队系统。您的所有作业都将在不同的进程中运行(不必担心线程安全或GIL),并且可以根据需要随时更新中央数据存储。
答案 1 :(得分:0)
在线程中执行长时间运行的作业,更新在report_status中扫描的某些status.txt文件