Ich habe eine Anwendung, die Sellerie und andere Dinge (z. B. Datenbank) initialisieren müssen. Ich hätte gerne eine INI-Datei, die die Anwendungskonfiguration enthalten würde. Dies sollte zur Laufzeit an die Anwendung übergeben werden.Lesen Sellerie Konfiguration von Python-Eigenschaftendatei
development.init:
[celery]
broker=amqp://localhost/
backend=amqp://localhost/
task.result.expires=3600
[database]
# database config
# ...
celeryconfig.py:
from celery import Celery
import ConfigParser
config = ConfigParser.RawConfigParser()
config.read(...) # Pass this from the command line somehow
celery = Celery('myproject.celery',
broker=config.get('celery', 'broker'),
backend=config.get('celery', 'backend'),
include=['myproject.tasks'])
# Optional configuration, see the application user guide.
celery.conf.update(
CELERY_TASK_RESULT_EXPIRES=config.getint('celery', 'task.result.expires')
)
# Initialize database, etc.
if __name__ == '__main__':
celery.start()
Sellerie zu starten, ich rufe:
celery worker --app=myproject.celeryconfig -l info
Gibt es trotzdem in der Konfigurationsdatei zu übergeben, ohne Etwas Hässliches tun, etwa eine Umgebungsvariable setzen?
In der nächsten Version (3.1, in git Master) Sie können auch Ihre eigenen Befehlszeilenargumente hinzufügen, die könnte als Alternative zu Envvars verwendet werden. – asksol
Hässlich oder nicht, ich fragte mich das gleiche wie die ursprüngliche Frage, aber das hilft nicht, es zu beantworten. :(Obwohl @ asesols Führung ist hilfreich. – shazow