我有以下任务,使用 Popen 运行 python 脚本(我已经尝试过check_output,调用相同的结果(
@app.task
def TaskName(filename):
try:
proc = subprocess.Popen(['python', filename],stdout=subprocess.PIPE,
stderr=subprocess.PIPE):
taskoutp, taskerror = proc.communicate()
print('Output: ', taskoutp)
print('Error: ', taskerror)
Except:
raise Exception('Task error: ', taskerror)
如果我在子流程中生成错误,它会显示在工人 cmd 窗口中,就好像它是正常的输出/打印一样,即使我手动关闭 Popen 子进程打开的窗口,任务也会无限期地保持状态"已启动"。
我该怎么做,使任务不仅打印错误,而且实际上停止并将其状态更改为 FAILURE?
如果要存储任务的结果,则可以使用此参数result_backend
或CELERY_RESULT_BACKEND
具体取决于您使用的芹菜版本。
此参数只能在处理任务后用于确认任务:
task_acks_late
Default: Disabled.
Late ack means the task messages will be acknowledged after the task has been executed, not just before (the default behavior).
配置选项的完整列表可以在这里找到 => https://docs.celeryproject.org/en/stable/userguide/configuration.html