Django的"call_command"挂了应用

Django's "call_command" hangs the application

我正在开发一个使用 Django 和 mongoengine 的项目。当用户按下按钮时,会触发 call_commanddjango.core.management - 在我看来只是调用一个脚本),它会并行连接到多个服务器,复制一些文件,解析它们并存储他们在数据库中。

问题是当按下按钮时,上面的过程是 运行,如果任何其他用户尝试使用该网站,它不会加载。

这是因为mongo的锁吗?一旦按下按钮就会发生这种情况(因此当仍然建立与其他服务器的连接时,尚未写入数据库)所以我认为这不是 mongo 问题。

同步调用命令是Django的问题吗?我需要使用 Celery 来完成这项任务吗?

当您对外部系统进行同步调用时,它会占用应用服务器中的一个线程,因此根据您选择的应用服务器以及您有多少个并发 threads/users 将决定是否这样做会为你工作。

通常当你有像这样的长 运行 请求时,最好使用后台处理系统,如芹菜,就像你建议的那样。