我刚开始使用django-celery,我想将celeryd作为守护进程运行。但是,instructions似乎暗示它一次只能配置一个站点/项目。芹菜可以处理多个项目,还是只能处理一个项目?而且,如果是这种情况,是否有一种简洁的方法来设置芹菜以便为每个配置自动启动,这要求我为每个配置创建一个单独的初始化脚本?使用celeryd作为一个守护进程与多个Django应用程序?
17
A
回答
8
像所有有趣的问题,答案是它取决于。 :)
这是绝对有可能提出一个场景,芹菜可以由两个独立的网站使用。如果多个站点将任务提交给同一个交易所,并且这些任务不需要访问任何特定的数据库 - 也就是说,他们使用电子邮件地址或信用卡号码或数据库记录以外的其他数据库 - 那么一个芹菜可能会就足够了。只要确保任务代码位于由所有站点和芹菜服务器加载的共享模块中。
虽然你会发现celery需要访问数据库 - 它可以根据作为任务参数传递的ID加载对象,或者必须对数据库写入一些更改,或者,最常见的是两者。多个网站/项目通常不共享数据库,即使它们共享相同的应用程序,因此您需要将任务队列分开。
在这种情况下,通常会发生的情况是您设置了一个具有多个交换机的单个消息代理(例如RabbitMQ)。每个交易所都接收来自单个站点的消息。然后你为每次交换运行一个或多个芹菜进程(在芹菜配置设置中,你必须指定交换,我不相信芹菜可以听多次交换)。每个芹菜服务器都知道它的交换,它应该加载的应用程序以及它应该连接的数据库。
为了管理这些,我建议您查看cyme - 它是通过@asksol,并在多个服务器上管理多个celeryd实例(如有必要)。我没有尝试,但它看起来应该处理不同实例的不同配置。
1
没试过,但使用3.1.X芹菜它不需要Django的芹菜,根据文档,您可以实例化一个芹菜应用程序是这样的:
app1 = Celery('app1')
app1.config_from_object('django.conf:settings')
app1.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@app.task(bind=True)
def debug_task(self):
print('Request: {0!r}'.format(self.request))
但是你可以使用芹菜多了几下水每个工作人员都有单一配置,您可以看到示例here。所以,你可以启动几个工人用不同--app APPX参数,所以它会使用不同的TAKS和设置:
# 3 workers: Two with 3 processes, and one with 10 processes.
$ celery multi start 3 -c 3 -c:1 10
celery worker -n [email protected] -c 10 --config celery1.py --app app1
celery worker -n [email protected] -c 3 --config celery2.py --app app2
celery worker -n [email protected] -c 3 --config celery3.py --app app3
相关问题
- 1. 设计一个多进程守护
- 2. init进程是一个守护进程
- 3. 使Ruby程序成为守护进程?
- 4. 使用python,守护进程
- 5. SimpleHTTPServer推出作为一个线程:不会守护进程
- 6. 使用listen-addr与docker守护进程
- 7. C#托盘图标应用程序与守护进程
- 8. 用nginx运行一个守护进程的瓶子应用程序
- 9. 我们如何制作守护进程应用程序?
- 10. 守护程序线程不止一个?
- 11. 编写一个linux守护进程
- 12. 在Ubuntu上使用jar作为守护进程使用100%cpu
- 13. 通过Mule中的守护进程线程维护多个HttpRequests
- 14. git守护进程与LFS?
- 15. 部署Rails应用程序与delayed_job作为守护程序任务运行
- 16. Docker - 芹菜作为一个守护进程 - 没有发现pidfiles
- 17. django多个应用程序
- 18. 用Clojure/JVM守护进程
- 19. mongrel_rails集群::开始不起作用,找守护进程/守护进程
- 20. 如何使用vfork在uClinux中产生一个守护进程?
- 21. 你如何守护一个Flask应用程序?
- 22. Codeigniter CLI作为守护进程
- 23. 运行web.py作为守护进程
- 24. 卡桑德拉作为守护进程
- 25. 将SBT作为守护进程运行
- 26. 作为守护进程的Docker容器
- 27. POPEN,多和守护程序与Python
- 28. 从Cocoa应用程序启动守护进程
- 29. 将守护进程/ Web应用程序添加到Linux组?
- 30. 守护进程启动应用程序启动