Ho un'applicazione che deve inizializzare Celery e altre cose (ad es. Database). Mi piacerebbe avere un file .ini che conterrebbe la configurazione delle applicazioni. Questo dovrebbe essere passato all'applicazione in fase di esecuzione.Leggi la configurazione di Celery dal file delle proprietà Python
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()
Per avviare Sedano, che io chiamo:
celery worker --app=myproject.celeryconfig -l info
Esiste un modo per passare nel file di configurazione, senza fare qualcosa di brutto come impostare una variabile d'ambiente?
Nella prossima versione (3.1, in master git) è anche possibile aggiungere i propri argomenti della riga di comando, che potrebbe essere usato come alternativa a envvars. – asksol
Brutto o no, mi stavo chiedendo la stessa cosa della domanda originale, ma questo non aiuta a rispondere. :(Anche se l'aiuto di @ askol è utile: – shazow