2016-06-02 5 views
4

Ich habe mein Gehirn auf diesem einen seit den letzten Tagen kratzen, habe ich andere Probleme auf Stackoverflow gesehen (wie es eine doppelte Frage ist) und ich habe alles versucht, um dies zu arbeiten Die Arbeiter laufen gut, aber der Sellerie beginnt nicht als Prozess.Running Sellerie als Daemon erstellt keine PID-Datei

ich den Befehl:

sudo service celeryd start 

und ich bekomme:

celery init v10.1. 
Using config script: /etc/default/celeryd 
celery multi v3.1.23 (Cipater) 
> Starting nodes... 
    > [email protected]: OK 

Ich betreibe:

sudo service celeryd status 

und ich bekomme:

celery init v10.1. 
Using config script: /etc/default/celeryd 
celeryd down: no pidfiles found 

Die selleryd down: keine pidfiles gefunden Fehler ist, was ich lösen muss.

Ich weiß, dass diese Frage ein Duplikat ist, aber immer noch mit mir auf diesem einen gehen, weil ich alle versucht habe und immer noch nicht in der Lage, es zu lösen.

Ich stelle dieses Skript auf Amazon Web Services bereit. Ich benutze eine virtuelle Umgebung.

Das init.d Skript ist direkt aus der here übernommen und dann gab ich ihm die erforderlichen Berechtigungen.

Hier ist meine Konfigurationsdatei:

# Names of nodes to start 
# most people 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" 
# alternatively, you can specify the number of nodes to start: 
#CELERYD_NODES=10 

# Absolute or relative path to the 'celery' command: 
# CELERY_BIN="/usr/local/bin/celery" 
CELERY_BIN="/home/<user>/.virtualenvs/<virtualenv_name>/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="<project_name>.settings:app" 

# Where to chdir at start. 
CELERYD_CHDIR="/home/<user>/projects/<project_name>/" 

# Extra command-line arguments to the worker 
CELERYD_OPTS="--time-limit=300 --concurrency=8" 

# %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 

ich den Prozess verwendet haben, den Sellerie Benutzer mit this Artikel zu erstellen.

Mein Projekt ist ein Django-Projekt und ich habe die Umgebungsvariable DJANGO_SETTINGS_MODULE in der Sellerie-Einstellungsdatei angegeben, wie in der documentation und auch im Stackoverflow answer angegeben.

Muss ich irgendetwas in der init.d Skript oder irgendetwas anderes, das in der Sellerie-Konfigurationsdatei hinzugefügt werden muss ändern ... Ist es über den Sellerie Benutzer, die ich geschaffen habe, weil ich auch versucht,

Angabe
CELERYD_USER = "" 
CELERYD_GROUP = "" 

während auch die Wert zu "" in der init.d Skript ändern. Immer noch blieb das Problem bestehen.

In einer der Antworten wurde auch gesagt, dass es einige Fehler im Projekt geben könnte ... aber ich habe dank meiner Testfälle keine solchen Fehler gefunden.

PS: Ich habe angegeben, und für Datenschutzprobleme haben sie ihre ursprünglichen Namen.

+0

Ich habe das gleiche Problem. Es scheint, als folge die Dokumentation manchmal hier. – Ryan

Antwort

0

Ich sah das gleiche Problem und es stellte sich heraus, dass es sich um ein Problem mit Berechtigungen handelte. Stellen Sie sicher, dass der Benutzer/die Gruppe, unter der Sellerie läuft, die Verzeichnisse/var/log/sellery/und/var/run/sellery/besitzt. Hier finden Sie eine Schritt für Schritt Beispiel: Daemonizing celery

0

Ich hatte das Problem und löste es gerade jetzt, Gott sei Dank! Für mich war es eine Erlaubnisfrage. Ich hatte erwartet, dass es in/var/run/sellerie oder/var/log/sellery ist, aber es stellte sich heraus, dass es sich um die Protokolldatei handelte, für die ich Django eingerichtet hatte. Aus irgendeinem Grund wollte Sellerie in diese Datei schreiben (ich muss das untersuchen), hatte aber keine Erlaubnis. Ich fand den Fehler mit dem ausführlichen Befehl und überspringe daemonization Schritt:

# C_FAKEFORK=1 sh -x /etc/init.d/celeryd start 

Dies ist ein alter Thread, aber wenn jemand von euch in diese Fehler laufen, ich hoffe, dass dies helfen kann!

Viel Glück!