我有一个flask API,它可以执行一些功能过程,并且只需几分钟即可返回。有时,请求将被客户端中止。在这些情况下,我想取消处理。我该如何在烧瓶中做到这一点?
我找到了一个临时解决方案。
@app.route('/stream')
def stream():
def gen():
try:
i = 0
while True:
data = 'this is line {}'.format(i)
print(data)
yield data + '<br>'
i += 1
time.sleep(1)
except GeneratorExit:
print('closed')
return Response(stream_with_context(gen()))
现在,当我们通过崇高请求时,此功能适用于浏览器,过了一段时间,我们关闭了崇高状态,flask api无法识别客户端终止
答案 0 :(得分:0)
使用celery程序包,并将其作为任务运行。然后,您可以使用任何其他途径来启动revoke()函数,该函数将停止celery任务,例如。 your_worker.revoke(task_id,Terminate = True)。