我正在创建一个 Django 应用程序,它对上传的文件进行各种长时间的计算。我不想让用户等待文件被处理 - 我只是想向用户显示一个页面,上面写着类似“正在解析文件”的内容。
如何从 View 进行异步函数调用?
可能看起来像这样的东西:
def view(request):
...
if form.is_valid():
form.save()
async_call(handle_file)
return render_to_response(...)
最佳答案
与其尝试通过子进程或线程来管理它,我建议您将其完全分离出来。有两种方法:第一种是在某个数据库表中设置一个标志,并定期运行一个 cron 作业来检查标志并执行所需的操作。
第二种选择是使用消息队列。您的文件上传过程在队列中发送一条消息,一个单独的监听器接收消息并执行所需的操作。我已经将 RabbitMQ 用于这类事情,但也可以使用其他方法。
无论哪种方式,您的用户都不必等待流程完成,您也不必担心管理子流程。
关于python - 有什么方法可以从 Python [Django] 进行异步函数调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1352678/