我有两个网站基本上运行相同的代码库,只有轻微的设置差异。每个站点都是在Django中构建的,集成了一个WordPress博客。如何确保Celery任务以正确的设置运行?
每个站点需要从WordPress导入博客文章并将它们存储在Django数据库中。当用户发布帖子时,WordPress会在Django端点击一个webhook网址,这会启动抓取该帖子的JSON版本并导入它的Celery任务。
我最初的想法是,每个网站都可以运行自己的manage.py celeryd
实例,每个实例都在自己的virtualenv
中,并且这两个网站将彼此保持距离。每个人都用一个单独的新贵脚本进行守护。
但它看起来像是以某种方式碰撞。我可以成功运行一个,但是如果两者都运行,一个实例将不会接收任务,或者任务将以错误的设置运行(在这种情况下,每个设置都有一个WORDPRESS_BLOG_URL
设置)。
我正在使用Redis队列,如果这有所作为。我在这里做错了什么?
这将与Redis一起工作吗?文档使它听起来像这只是AMPQ。在将CELERY_DEFAULT_QUEUE添加到命令行中的设置和-Q(带队列名称)之后,我仍然看到同样的问题。 – 2012-02-07 19:11:47
我编辑了我的答案。你是对的,那个设置只适用于AMPQ经纪人。 – 2012-02-07 20:47:01
我认为这是诀窍。我假定'CELERY_REDIS_ *'设置也设置了任务路由,但看起来像'BROKER_UR'L需要独立于结果存储设置。 – 2012-02-08 19:23:57