我正在开发一个使用Django和mongoengine的项目。当用户按下按钮时,触发到call_command
(django.core.management
- 只调用我看来的脚本),并行扫描到多个服务器,复制一些文件,解析它们和存储他们在数据库中。
问题是当按下按钮并且上述过程正在运行时,如果任何其他用户尝试使用该网站,则不会加载该按钮。
这是因为mongo的锁吗?一旦按下按钮就会发生这种情况(所以当仍然与其他服务器建立连接时,还没有写入数据库)所以我认为这不是一个mongo问题。
同步调用命令的Django问题是什么?我是否需要使用芹菜来完成这项任务?
答案 0 :(得分:1)
当您对外部系统进行同步调用时,它将占用应用程序服务器中的一个线程,因此根据您选择的应用程序服务器以及您拥有的并发线程/用户数将确定以这种方式执行是否适合您
通常,当您长时间运行此类请求时,最好使用像芹菜一样的后台处理系统。