2015-04-17 24 views
5

Bir Flask uygulaması geliştiriyorum ve planları geliştiriyorum. Kereviz görev kuyruklarını kullanmayı planlıyorum. SonraKereviz fabrika işlevi vs kereviz ithalatı

celery = make_celery(app) 

yapıyor fayda veya

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 

ve böyle bir şey kullanmak nedenini anlamak için çalışıyor ve sadece ithal ve benim görevlerde bir kereviz örneklerini oluşturarak karşı benim tasks.py aktarmadan am basit bir görevi yazıyorsanız

from celery import Celery 

app = Celery('hello', broker='amqp://[email protected]//') 
@app.task 
def mytask(): 
+0

Avantajları - planları kullanıyorsanız çok önemlidir - ithalat siparişi ve döngüsel ithalat konusunda çok fazla endişelenmeniz gerekmez. –

+0

Make_celery yolunu kullanmadığınızda uygulama bağlamıyla ilgili sorunlar var mı? – user982599

cevap

2

gibi .py, işlevini süslemeleri kereviz & ithal etmek daha iyidir.

Bazı karmaşık görevler oluşturuyorsanız, Görev'in yerine getirilmesi daha iyidir. Burada OOP'un gücünü alacaksınız. Kodunuzu küçük bloklara ayırabilirsiniz. Bu, kodunuzu test etmeyi kolaylaştırır. Ayrıca, tüm görevleriniz için bazı özel yapılandırmalar isterseniz, tüm görevler için bunlardan miras alabileceğiniz özel bir & taban tablosuna sahip olabilirsiniz.

+0

Kereviz ve görevlerimi basitçe çektiğimde kereviz ve Flask uygulama içeriği konusunda endişelenmem gerekir mi? Kereviz ona erişime ihtiyacı var mı yoksa ben sadece app.context() ile birşeyler yapıyorum(): runtask.delay() ' – user982599

+0

app.context hakkında bilmiyorum, ama kereviz hakkında endişelenmenize gerek yok bu bağlam. – ChillarAnand