异步运行python函数而不阻塞调用方函数(并且不需要结果)



我需要对到给定路由的POST请求进行漫长的预处理步骤(我使用的是Django(。这将读取数据集,更改一些内容,然后将其重新写入磁盘(可能需要几分钟时间(。我不需要这个函数的结果,我只想异步执行它,并立即发送HTTP响应,而不需要等待它结束。

目前,它说从未等待过子程序"preprocess_dataset_async",也没有完全执行它。

@require_POST
def preprocess_dataset(request, f_path=''):
# ...
preprocess_dataset_async(f_path, data)
return HttpResponse('Request is being handled in the background', status=200)
async def preprocess_dataset_async(f_path, preprocess_args):
# ...
await stuff
# ...

在不阻塞调用方函数的情况下,在后台执行此任务的最佳方式是什么?

threading可能是一个解决方案。

但一个更好且有远见的解决方案是引入Celery

最新更新