芹菜任务未检测到子进程的错误



我有以下任务,使用 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_backendCELERY_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

相关内容

  • 没有找到相关文章

最新更新