Django的“call_command”挂起了应用程序

时间:2015-02-19 11:50:48

标签: python django parallel-processing celery mongoengine

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

问题是当按下按钮并且上述过程正在运行时,如果任何其他用户尝试使用该网站,则不会加载该按钮。

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

同步调用命令的Django问题是什么?我是否需要使用芹菜来完成这项任务?

1 个答案:

答案 0 :(得分:1)

当您对外部系统进行同步调用时,它将占用应用程序服务器中的一个线程,因此根据您选择的应用程序服务器以及您拥有的并发线程/用户数将确定以这种方式执行是否适合您

通常,当您长时间运行此类请求时,最好使用像芹菜一样的后台处理系统。