python - 有什么方法可以从 Python [Django] 进行异步函数调用吗?

标签 python django asynchronous

我正在创建一个 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/

相关文章:

python - Tornado Web 框架 Mysql 连接处理

python - Git-在本地分支上进行了更改, checkout 了 master,并且 master 现在已损坏

python - 在 Python 中使用 For 循环查找匹配值和总计

javascript - 异步问题过滤器将不起作用,因为数组为空

javascript - 如何从异步调用返回响应?

python - 在 python 中编写修改后的 XML 元素

python - 从字符串中删除数字

python - 立即处理异步响应

python - 如何在 django 中获取外键的特定字段?

python - Django 日期时间字段(带有 sqlite 数据库)返回 unicode