来自一个域的 celery 任务出现在同一个框中托管的另一个域的 django 管理员上

来自一个域的 celery 任务出现在同一个框中托管的另一个域的 django 管理员上

我遇到了一个相当有趣的问题,我没有在其他地方找到它。我有 2 个 django-celery 项目在 2 个不同的域上使用 redis 运行,但显然托管在同一个框中。我没有 sudo 访问权限,所以我不使用 reddis 守护程序或 celery 守护程序,而是通过 cron 检查/启动它们,如下所示:

ps -u $USER | grep redis-server >/dev/null || $HOME/bin/redis-server $HOME/redis-stable/redis.conf

ps -u $USER | grep python >/dev/null || $HOME/python27/bin/python $HOME/utilities/manage.py celeryd -E -B --concurrency=1 && $HOME/python27/bin/python $HOME/utilities/manage.py celerycam

我没有修改原始 redis.conf 文件中的任何内容,并且对于两个项目,我的“settings.py”包含:

BROKER_URL = "redis://localhost:6379/0"
BROKER_TRANSPORT_OPTIONS = {'visibility_timeout': 3600}
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

import djcelery
from celery.schedules import crontab

djcelery.setup_loader()

CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'

好的,问题是我在一个域的 djcelery django admin 上有 2 个计划任务,而另一个域还没有任务。但在第二个域的 django admin 中的“任务”页面下,我可以看到第一个域启动的所有任务。我不知道该怎么做才能解决这个问题。我的域不共享相同的数据库或任何其他资源,通过分析它们的进程,我可以看到它们每个都有不同的 redis、celeryd 和 celerycam 实例。谢谢你的帮助。

答案1

我更改了其中一个域的 redis 端口,问题就解决了。可能 celerycam 正在从两个 worker 中捕获任务,即使它们属于不同的用户。

相关内容