läuft Sellerie als daemon mit Vorgesetzten nicht arbeiten
Habe ich eine django-app, in der es eine Sellerie-Funktionalität, so kann ich in der Lage zu laufen, den Sellerie erfolgreich wie unten
celery -A tasks worker --loglevel=info
aber als eine bekannte Tatsache, dass wir brauchen, um es zu laufen als daemon, und so habe ich geschrieben das unter celery.conf
Datei in /etc/supervisor/conf.d/
Ordner
; ==================================
; celery worker supervisor example
; ==================================
[program:celery]
; Set full path to celery program if using virtualenv
command=/root/Envs/proj/bin/celery -A app.tasks worker --loglevel=info
user=root
environment=C_FORCE_ROOT="yes"
environment=HOME="/root",USER="root"
directory=/root/apps/proj/structure
numprocs=1
stdout_logfile=/var/log/celery/worker.log
stderr_logfile=/var/log/celery/worker.log
autostart=true
autorestart=true
startsecs=10
; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600
; When resorting to send SIGKILL to the program to terminate it
; send SIGKILL to its whole process group instead,
; taking care of its children as well.
killasgroup=true
; if rabbitmq is supervised, set its priority higher
; so it starts first
priority=998
aber wenn ich versucht, zu aktualisieren, die Vorgesetzten wie supervisorctl reread
und supervisorctl update
ich war die Botschaft von supervisorctl status
celery FATAL Exited too quickly (process log may have details)
Also ging ich zu worker.log
Datei und sehen Sie die Fehlermeldung, wie unten
Running a worker with superuser privileges when the
worker accepts messages serialized with pickle is a very bad idea!
If you really want to continue then you have to set the C_FORCE_ROOT
environment variable (but please think about this before you do).
User information: uid=0 euid=0 gid=0 egid=0
Also, warum es war, beschwerte sich über C_FORCE_ROOT
obwohl wir hatten es als environment-variable inside-supervisor conf-Datei ? was mache ich falsch in der oben genannten conf-Datei ?
- Nicht als root laufen — es sollte nicht notwendig sein. (Verwenden Sie diese mit Django — laufen als der selbe Benutzer wie dort.)
- ja ok, wenn ich entfernt die Zeile
environment=HOME="/root",USER="root"
es war in Ordnung arbeiten - Ich hatte dieses problem mit AWS Elasticbeanstalk, mit user= "ec2-user" fixiert es für mich
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie laufen Sellerie mit einem nicht superuser account, Bitte entfernen Sie folgende Zeilen aus deiner config:
Und fügen Sie diese Zeilen in deine config, ich nehme an, Sie verwenden
django
als nicht superuser unddevelopers
wie die user group:Also Bitte beachten Sie, dass beim ändern von Umgebungsvariablen über
supervisor
config-Dateien, Änderungen nicht anwenden durch ausführensupervisorctl reread
undsupervisorctl reload
. Sie laufen sollten Betreuer von Anfang an, indem Sie folgenden Befehl ein:Ich hatte das gleiche problem,also ich habe
in meinem Programm config,aber Es hat nicht funktioniert
so habe ich
es funktioniert
Vom dieser andere thread auf stackoverflow. Ich es geschafft, fügen Sie die folgenden Einstellungen, und es funktionierte für mich.