Django 的"call_command"挂起了应用程序



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

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

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

那么同步调用命令是Django的问题吗?我需要使用Celery执行此任务吗?

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

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

相关内容

  • 没有找到相关文章

最新更新