2011-11-22 11 views
24

.örnekler: Periyodik Görevler Ben bir süredir Django/Kereviz belgelerine mücadele ve biraz yardıma ihtiyacım edilmiştir

Django-kereviz kullanarak Periyodik Görevler çalıştırmak mümkün istiyorum. İnternette (ve dökümantasyonda), Celery kullanarak bunu nasıl gerçekleştireceğine dair birkaç farklı format ve şema görmüştüm ...

Birinin yaratılması, tescili ve yürütülmesiyle ilgili temel, işleyen bir örnek ile yardımcı olabilir. django-kereviz periyodik görevi? Özellikle, PeriodicTask sınıfını genişleten ve bunu kaydeden bir görev yazmam gerekip gerekmediğini veya @periodic_task dekoratörünü kullanmam gerekip gerekmediğini veya @task dekoratörünü kullanıp kullanmamam gerektiğini ve sonra da görev için bir program ayarlayıp düzenlememeyi öğrenmek istiyorum. yürütme.

her üç yol mümkündür olması önemli değil, ama ben çalışır, en azından bir yolun bir örneğini görmek istiyorum. Gerçekten yardımın için teşekkürler.

cevap

37

example from the docs nesi var?

from celery.task import PeriodicTask 
from clickmuncher.messaging import process_clicks 
from datetime import timedelta 


class ProcessClicksTask(PeriodicTask): 
    run_every = timedelta(minutes=30) 

    def run(self, **kwargs): 
     process_clicks() 

Bir dekoratör kullanarak aynı görevi yazabiliriz:

from celery.task.schedules import crontab 
from celery.task import periodic_task 

@periodic_task(run_every=crontab(minute="*/30")) 
def process_clicks(): 
    .... 

decorator syntax sadece doğrudan onlara değiştirmeden periyodik görev haline varolan fonksiyon/görevi açmak için izin verir. görevler için

celerybeat must be running yürütülecek.

+0

Cevabınız için teşekkür ederiz. Dekoratörün tam olarak ne için olduğunu ve neden aynı şeyin iki formunun olduğunu bilmek güzel. O zaman PeriodicTasks'i kaydetmem gerekmediği doğru mu? Bu örneği belgelerde bulmak zor buldum ve basitleştirme ile yapabilir (yukarıda yaptığınız gibi). Tekrar teşekkürler. –

+0

Hey, Burada dokümanlardan başka bir örnek bulunmaktadır: http://ask.github.com/celery/reference/celery.decorators.html Dekoratör kullanıyorsanız, görevi açıkça kaydetmeniz gerekmez. sen eğer, sen Django (https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#registering-the-tag) daki templatetags ve filtreler kayıt var seçeneklerine oldukça benziyor Buna daha aşina. – arie

+0

Yardımlarınız için tekrar teşekkür ederiz. –

İlgili konular