2017-03-03 5 views
0

In der Sellerie-Dokumentation heißt es, dass sich die Konfigurationsdatei im Arbeitsverzeichnis oder im Python-Pfad befinden sollte.Standort der Sellerie-Konfigurationsdatei

from celery import Celery 
from properties import config_file 
import sys 


sys.path.append(config_file) 
app = Celery() 
app.config_from_object(config_file.split('.')[0]) 

Hier config_file ist /opt/celery/celery_config.py. Die Idee ist, dem Benutzer die Freiheit zu geben, eine Konfigurationsdatei zu erstellen. Die Dokumentation besagt, dass die Konfigurationsdatei entweder im Arbeitsverzeichnis oder im Systempfad sein sollte. Ich habe die Datei "config_file" im Pfad "sys" hinzugefügt, aber wenn der Worker gestartet wird, wird ein Importfehler ausgelöst.

Muss die Datei config_file im selben Verzeichnis wie das Modul sein, das die Sellery-Instanz erstellt?

+0

Konnten Sie den Code für Eigenschaftenmodul auch geben? –

Antwort

0

Es ist nicht notwendig, config im selben Verzeichnis zu haben.

Einfache Lösung ist, Verzeichnis beim Start Sellerie Arbeiter zu ändern. Wenn Sie den Supervisor oder ein anderes Tool zum Starten von Worker verwenden, können Sie das Verzeichnis angeben, in dem der Worker ausgeführt werden soll.

In diesem Fall können Sie das Verzeichnis /opt/celery und den Sellerie-Befehl als celery worker -l info --config=celery_config angeben, der die Konfiguration von /opt/celery/celery_config.py übernimmt.

Alternativ können Sie dieses Verzeichnis zu sys.path hinzufügen. Fügen Sie das Verzeichnis in Ihrem Sellerie-Modul an sys.path an.

import sys 

from celery import Celery 


sys.path.append('/opt/celery/') 


app = Celery() 
app.config_from_object('celery_config') 

Dies wird Konfiguration aus /opt/celery/celery_config.py auswählen.

+0

Wenn Sie sehen, habe ich sys.path.append (config_file) aufgerufen, aber aus irgendeinem Grund hat das nicht funktioniert. Ich habe am Ende ein Config-Klasse-Objekt verwendet. Ich habe die Attribute dieser Klasse durch Lesen der Konfigurationsdatei festgelegt. – amrx

+0

@amrx Sollten wir 'sys.path.append (dir) anstelle von sys.path.append (config_file)' 'verwenden? – ChillarAnand

Verwandte Themen