Wpis z mikrobloga

Mireczki potrzebuje pomocy z konfiguracją #celery #rabbitmq #supervisor #django #python
Miałem sobie na serwerze jedną apkę w #django z taskami #celery na #rabbitmq, celery odpalane przez #supervisor i wszystko działało jak należy. Dołożyłem kolejną apkę w django zachowując ten sam schemat konfiguracji i działa, tylko zaczęły się problemy. Taski z jednej trafiają czasem do drugiej i odwrotnie.

konfiguracją celery.py 1 apki:

import os
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGOSETTINGSMODULE', 'myshop.settings')
os.environ.setdefault('DJANGOCONFIGURATION', 'Production')
import configurations
configurations.setup()
app = Celery('myshop')
app.config
fromobject('django.conf:settings')
app.autodiscover
tasks(lambda: settings.INSTALLEDAPPS)

konfiguracją celery.py 2 apki:
import os
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO
SETTINGSMODULE', 'logistyka.settings')
os.environ.setdefault('DJANGO
CONFIGURATION', 'Production')
import configurations
configurations.setup()
app = Celery('logistyka')
app.configfromobject('django.conf:settings')
app.autodiscovertasks(lambda: settings.INSTALLEDAPPS)

konfiguracja supervisor 1 apki:
[program:celeryd]
command=/webapps/myshopdjango/bin/celery -A myshop worker --loglevel=INFO --concurrency=10 -n worker1.%%h
directory=/webapps/myshop
django/myshop
user=myshop
stdoutlogfile=/webapps/myshopdjango/logs/celeryd.log
stderrlogfile=/webapps/myshopdjango/logs/celeryd.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs=600

konfiguracja supervisor 2 apki:
[program:celerydlogistyka]
command=/webapps/logistyka
django/bin/celery -A logistyka worker --loglevel=INFO --concurrency=10 -n worker2.%%h
directory=/webapps/logistykadjango/logistyka
user=logistyka
stdout
logfile=/webapps/logistykadjango/logs/celeryd.log
stderr
logfile=/webapps/logistyka_django/logs/celeryd.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs=600

Przerabialiście już podobny problem, albo macie jakiś pomysł?
  • 9
@svs_svs: średnio się znam, ale może trzeba zdefiniować osobne kolejki

A worker instance can consume from any number of queues. By default it will consume from all queues defined in the task_queues setting (that if not specified falls back to the default queue named celery).


http://docs.celeryproject.org/en/latest/userguide/workers.html#queues
https://stackoverflow.com/questions/19853378/how-to-keep-multiple-independent-celery-queues
dziwne to, skonfigurowałem jak w linku ze stacka i nie tworzy taska ani nic nie trafia do logów. Jak zaloguje się do shella zaimportuję taska i wywołam to się wykonuje, ale nie trafia nic do logów celery ( ͡° ʖ̯ ͡°)
@FiKsUmDyRdUm: Nie wiem dlaczego nie działa u mnie ustawienie BROKERURL. Wstawiłem w settings.py

CELERY
BROKERURL = 'amqp://logistyka:logistyka@localhost:5672/logistykavhost'
i
BROKERURL = 'amqp://logistyka:logistyka@localhost:5672/logistykavhost'

a ten ciągle wysyła mi pod domyślny adres: amqp://guest@localhost//
próbowałem też dodać do celery.py
app = Celery('logistyka', broker='amqp://logistyka:logistyka@localhost:5672/logistyka_vhost')
ni cholery nic nie daje, uparta małpa ciągle wysyła na default