Sto sviluppando un'applicazione Flask e facendo leva su progetti. Ho intenzione di utilizzare le code dei task di sedani. Sto cercando di capire il beneficio o motivo di usare qualcosa comeFunzione fabbrica di sedano e importazione di sedano
def make_celery(app):
celery = Celery(app.import_name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)
TaskBase = celery.Task
class ContextTask(TaskBase):
abstract = True
def __call__(self, *args, **kwargs):
with app.app_context():
return TaskBase.__call__(self, *args, **kwargs)
celery.Task = ContextTask
return celery
e poi facendo
celery = make_celery(app)
e l'importazione nel mio tasks.py contro solo l'importazione e la creazione di un sedano casi nei miei compiti .py come
from celery import Celery
app = Celery('hello', broker='amqp://[email protected]//')
@app.task
def mytask():
Il vantaggio, che è molto importante se si utilizzano i progetti, è che non è necessario preoccuparsi troppo dell'ordine di importazione e delle importazioni circolari. –
Ci sono problemi con il contesto dell'applicazione quando non si utilizza il modo make_celery? – user982599