Dat*_*eed 6 python django asynchronous
我正在创建一个Django应用程序,它对上传的文件进行各种长计算.我不想让用户等待处理文件 - 我只是想向用户显示一个页面,读取的内容类似于"正在解析文件".
如何从视图中进行异步函数调用?
可能看起来像这样的东西:
def view(request):
...
if form.is_valid():
form.save()
async_call(handle_file)
return render_to_response(...)
Run Code Online (Sandbox Code Playgroud)
我建议您完全将其分开,而不是尝试通过子进程或线程来管理它.有两种方法:第一种方法是在某个地方的数据库表中设置一个标志,并定期运行一个cron作业来检查标志并执行所需的操作.
第二个选项是使用消息队列.您的文件上载过程在队列上发送消息,并且单独的侦听器接收消息并执行所需操作.我已经将RabbitMQ用于此类事情,但其他人也可以使用.
无论哪种方式,您的用户都不必等待该过程完成,您不必担心管理子进程.
| 归档时间: |
|
| 查看次数: |
6589 次 |
| 最近记录: |