我使用 Tornado 作为 Web 服务器,用户可以通过前端页面提交任务,审核后他们可以启动提交的任务。在这种情况下,我想启动一个异步子进程来处理任务,因此我在请求处理程序中编写了以下代码:
def task_handler():
// handle task here
def start_a_process_for_task():
p = multiprocessing.Process(target=task_handler,args=())
p.start()
return 0
Run Code Online (Sandbox Code Playgroud)
我不关心子流程,只是为它启动一个流程并返回前端页面并告诉用户任务已启动。任务本身将在后台运行,并将其状态或结果记录到数据库中,以便用户稍后可以在网页上查看。所以在这里我不想使用阻塞的 p.join(),但是在任务完成后没有 p.join(),子进程成为一个不复存在的进程,因为 Tornado 作为守护进程运行并且永不退出,不复存在过程永远不会消失。
谁知道怎么解决这个问题,谢谢。