У меня довольно забавная проблема, которую мне не удалось найти в другом месте. У меня есть 2 проекта django-celery, работающих с redis в двух разных доменах, но, по-видимому, размещенных в одном ящике. У меня нет доступа к sudo, поэтому я не использую демон reddis или сельдерей, а вместо этого проверяю / запускаю их через 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'
Хорошо, проблема в том, что у меня есть 2 запланированных задачи для одного домена djcelery django admin, а для другого домена еще нет задач. Но на странице «Задачи» в администраторе django этого второго домена я могу видеть все задачи, запущенные первым доменом. Я не знаю, что я могу сделать, чтобы это исправить. Мои домены не используют одну и ту же базу данных или какие-либо другие ресурсы, и анализируя их процессы, я вижу, что у каждого из них есть разные экземпляры redis, celeryd и celerycam. Спасибо за помощь.
Я изменил порт Redis для одного из доменов, и проблема была решена. Вероятно, celerycam ловил задачи от обоих рабочих, даже если они были на разных пользователях.