Daemonizing de céleri
Instructions suivantes trouvé ici, j'ai copié le script à partir de github en /etc/init.d/celeryd, puis fait exécutable;
$ ll /etc/init.d/celeryd
-rwxr-xr-x 1 root root 9481 Feb 19 11:27 /etc/init.d/celeryd*
J'ai créé le fichier config /etc/default/celeryd selon les instructions:
# Names of nodes to start
# most will only start one node:
#CELERYD_NODES="worker1"
# but you can also start multiple and configure settings
# for each in CELERYD_OPTS (see `celery multi --help` for examples).
CELERYD_NODES="worker1 worker2 worker3"
# Absolute or relative path to the 'celery' command:
CELERY_BIN="/usr/local/bin/celery"
#CELERY_BIN="/virtualenvs/def/bin/celery"
# App instance to use
# comment out this line if you don't use an app
#CELERY_APP="proj"
# or fully qualified:
#CELERY_APP="proj.tasks:app"
# Where to chdir at start.
CELERYD_CHDIR="/path/to/folder/containing/tasks/"
# Extra command-line arguments to the worker
CELERYD_OPTS="--time-limit=3000 --concurrency=3 --config=celeryconfig"
# %N will be replaced with the first part of 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.
# You need to create this user manually (or you can choose
# a user/group combination that already exists, e.g. nobody).
CELERYD_USER="celery"
CELERYD_GROUP="celery"
# If enabled pid and log directories will be created if missing,
# and owned by the userid/group configured.
CELERY_CREATE_DIRS=1
Note: j'ai ajouté le --config=celeryconfig partie dans CELERYD_OPTS.
J'ai créé un nouvel utilisateur céleri avec
sudo useradd -N -M --system -s /bin/false celery
puis création d'un groupe de céleri et a ajouté de l'utilisateur:
$ id celery
uid=999(celery) gid=1005(celery) groups=1005(celery)
J'ai utilisé chown de céleri:le céleri pour les dossiers:
/var/run/céleri/
/var/log/céleri/
Lorsque je tente de démarrer le service, je n'ai pas d'indication d'erreur:
$ sudo service celeryd start
celery init v10.0.
Using config script: /etc/default/celeryd
mais statut me donne "pas de pids ont été trouvés":
$ sudo service celeryd status
celery init v10.0.
Using config script: /etc/default/celeryd
celeryd is stopped: no pids were found
et en effet, le ps -ef donne pas de résultats et pas de fichier PID ou les fichiers journaux sont créés:
$ ll /var/run/celery
total 0
drwxr-sr-x 2 celery celery 40 Feb 19 14:13 ./
drwxr-xr-x 16 root root 620 Feb 19 12:35 ../
$ ll /var/log/celery
total 8
drwxr-sr-x 2 celery celery 4096 Feb 19 14:13 ./
drwxr-xr-x 13 root root 4096 Feb 19 11:37 ../
Informations supplémentaires:
$ pip freeze | grep celery
celery==3.1.9
Ce qui me manque? Où dois-je être à la recherche pour plus d'indices quant à pourquoi celeryd n'est pas de commencer?
Est-il une raison pourquoi vous avez utilisé -N avec la commande useradd? "-N, --no-user-group N'est pas de créer un groupe avec le même nom que l'utilisateur". Comme vous puis "groupe créé le céleri et l'ajout de l'utilisateur". Sincèrement, je ne sais pas si elles sont équivalentes.
OriginalL'auteur Jinxcat | 2014-02-19
Vous devez vous connecter pour publier un commentaire.
Je répliqué vos pas et il a abouti à la même question. Le problème était le céleri utilisateur de ne pas avoir un shell.
Changer
-s /bin/false
à-s /bin/bash
résolu le problème. La raison en est que la celeryd init script utilise le céleri shell utilisateur pour exécuter le céleri commandes. Sans un shell, la commande su-dessous quitte silencieusement.veuillez prendre un coup d'oeil à ce lien
OriginalL'auteur ravishi
J'ai utilisé une version légèrement différente de l'script d'initialisation, fourni ici:
De l'exécution avec les dryrun option m'a donné exactement la commande init est en train de construire.
L'exécution de cette commande après avoir enlevé les deux options ci-dessous:
m'a permis de le lancer en console, et d'observer le python trace de l'erreur.
Il a fini par être que j'ai dû réinstaller le
redis
module (que j'utilise comme backend) parpip
Je vais diff les deux scripts d'initialisation jusqu'à la fin avec un mélange de.
OriginalL'auteur Jinxcat
J'ai eu le même problème. Même si j'avais essayé de l'exécuter avec l'utilisateur root, je ne pouvais pas commencer à tout travailleur. Puis je suis tombé sur cette réponse https://groups.google.com/forum/#!topic/céleri-utilisateurs/s8OFSdWdHo8 Il dit essentiellement à l'utilisateur qui exécutera les travailleurs doivent disposer d'un répertoire de base.
Après la création d'un autre utilisateur avec un répertoire de base, j'ai pu commencer à les travailleurs.
OriginalL'auteur Muatik