Django服务器与芹菜工人共享作用域

2024-06-11 00:54:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个使用永久对象MyService的web应用程序。使用web界面,我可以动态更新其状态并监视其行为。现在我想定期调用它的一个方法。我正考虑使用芹菜周期任务,但遇到一些范围问题。我似乎需要执行三个不同的过程:

python manage.py runserver
python manage.py celery worker
python manage.py celerybeat

问题是,即使我确保MyService是一个可以被多个线程安全使用的singleton,celeri也会创建它自己的对象的新副本。有没有办法可以在django服务器和celeri主进程之间共享这个对象?我试图从django脚本中找到一种启动芹菜的方法,但直到现在都没有成功。谢谢你的帮助。在


Tags: 对象django方法pyweb应用程序界面manage
1条回答
网友
1楼 · 发布于 2024-06-11 00:54:37

如果您需要在多个进程或甚至多台机器之间共享某些信息(例如,您的工人可以在一台单独的机器上运行),那么最好(也可能最容易)共享信息的做法是使用外部服务。在

在最简单的情况下,您可以使用Django的DB,但如果您遇到这种情况,例如,如果您的写负载很重,可以使用Redis或Memcache之类的东西(也可以通过Django的缓存API与之对话)。这将使您能够处理大的写负载,此外,您还可以使用例如Redis作为芹菜队列。在

相关问题 更多 >