Mes tâches de céleri cessent d'être exécutées entre les deux. Mon rabbitmq s'arrête entre les deux, puis je dois le redémarrer manuellement. La dernière fois (15-16 heures en arrière), un problème similaire s'est produit, j'ai fait ce qui suit (manuellement) et il a recommencé à fonctionner.
J'ai réinstallé le rabbitmq puis il a recommencé à fonctionner.
Sudo apt-get --purge remove raabitmq-server
Sudo apt-get install raabitmq-server
Maintenant, il montre à nouveau `
Celery - errno 111 connection refused
Voici ma config.
BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp://'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT=['json']
CELERY_TIMEZONE = 'Europe/Oslo'
CELERY_ENABLE_UTC = True
CELERY_CREATE_MISSING_QUEUES = True
Veuillez me faire savoir où je me trompe?
Comment dois-je y remédier?
Partie 2
De plus, j'ai plusieurs files d'attente. Je peux l'exécuter dans le répertoire du projet, mais lors de la diabolisation, les travailleurs ne prennent pas la tâche. J'ai encore besoin de démarrer manuellement les travailleurs du céleri. Comment puis-je le démozifier?
Voici ma celerd conf.
# Name of nodes to start, here we have a single node
CELERYD_NODES="w1 w2 w3 w4"
CELERY_BIN="/usr/local/bin/celery"
# Where to chdir at start.
CELERYD_CHDIR="/var/www/fractal/parser-quicklook/"
# Python interpreter from environment, if using virtualenv
#ENV_PYTHON="/somewhere/.virtualenvs/MyProject/bin/python"
# How to call "manage.py celeryd_multi"
#CELERYD_MULTI="/usr/local/bin/celeryd-multi"
# How to call "manage.py celeryctl"
#CELERYCTL="/usr/local/bin/celeryctl"
#CELERYBEAT="/usr/local/bin/celerybeat"
# Extra arguments to celeryd
CELERYD_OPTS="--time-limit=300 --concurrency=8 -Q BBC,BGR,FASTCOMPANY,Firstpost,Guardian,IBNLIVE,LIVEMINT,Mashable,NDTV,Pandodaily,Reuters,TNW,TheHindu,ZEENEWS "
# Name of the celery config module, don't change this.
CELERY_CONFIG_MODULE="celeryconfig"
# %n will be replaced with the nodename.
CELERYD_LOG_FILE="/var/log/celery/%n.log"
CELERYD_PID_FILE="/var/run/celery/%n.pid"
# Workers should run as an unprivileged user.
#CELERYD_USER="nobody"
#CELERYD_GROUP="nobody"
# Set any other env vars here too!
PROJET_ENV="PRODUCTION"
# Name of the projects settings module.
# in this case is just settings and not the full path because it will change the dir to
# the project folder first.
CELERY_CREATE_DIRS=1
Celeryconfig est déjà fourni dans la partie 1.
Voici ma structure de répertoire proj.
project
|-- main.py
|-- project
| |-- celeryconfig.py
| |-- __init__.py
|-- tasks.py
Comment puis-je diaboliser avec les files d'attente? J'ai fourni les files d'attente dans CELERYD_OPTS
ainsi que.
Existe-t-il un moyen de diaboliser dynamiquement le nombre de files d'attente dans le céleri? Par exemple: - nous avons CELERY_CREATE_MISSING_QUEUES = True
pour créer les files d'attente manquantes. Existe-t-il quelque chose de similaire pour démoniser les files d'attente de céleri?
je ne sais pas si vous avez déjà corrigé cela, mais à première vue, il semble que vous ayez un tas de problèmes.
tout d'abord, vérifiez si votre serveur RabbitMQ a des problèmes pour rester en place pour une raison quelconque.
/var/log/syslog
pourrait être un bon point de départ). Vous ne dites rien sur le système d'exploitation de votre serveur, mais en supposant que c'est Debian/Ubuntu parce que vous mentionnez apt-get, voici une liste des emplacements de journaux du système d'exploitation qui pourraient vous aider: https://help.ubuntu.com/community/LinuxLogFilesassurez-vous également que votre serveur RabbitMQ a été configuré avec les informations d'identification correctes et autorisez l'accès depuis l'emplacement de votre travailleur (par exemple, activez les connexions autres que les utilisateurs de bouclage): voici ce que vous devez faire: https: //www.rabbitmq .com/access-control.html
ensuite, vérifiez que vous avez configuré votre travailleur avec les informations d'authentification correctes, une URL complète devrait ressembler à la suivante (où l'utilisateur doit avoir accès à l'hôte virtuel spécifique, il est assez facile de le configurer via l'interface de gestion RabbitMQ https://www.rabbitmq.com/management.html ):
BROKER_URL = 'amqp://user:pass@Host:port/virtualhost' CELERY_RESULT_BACKEND = 'amqp://user:pass@Host:port/virtualhost'
et enfin, essayez de retracer l'exception en python, qui devrait vous donner, espérons-le, des informations supplémentaires sur l'erreur
hth
p.s. ré. diabolisant votre travailleur de céleri, la réponse @budulianin est parfaite!
Comment puis-je le démozifier?
Habituellement, j'utilise supervisord à cet effet.
Voici un exemple de configuration:
[program:celery]
command=/home/my_project/.virtualenvs/my_project/bin/celery worker
-A my_project.project.celery_app.celery_app
-n worker-%(process_num)s
--concurrency=4
--statedb=/tmp/%(process_num)s.state
-l INFO
environment=MY_SETTINGS='/etc/my_settings.py'
process_name=%(program_name)s_%(process_num)02d
numprocs_start=1
numprocs=4
user=user_name
directory=/home/my_project
stdout_logfile=/var/log/my_project/celery.log
stderr_logfile=/var/log/my_project/celery_err.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs = 600
killasgroup=true
priority=998
BTW, CELERY_CREATE_MISSING_QUEUES activé par défaut.