2014-05-09 5 views
5

मैं expiry_date_notification की जांच के लिए हर रोज इस रात को चलाने के लिए चाहता हूं। मैं क्या कर सकता हूँ? मैं django और पायथन के लिए नया हूँ।Django - हर दिन एक समारोह कैसे चलाएं?

def check_expiry_date(request): 
    products = Product.objects.all() 
    for product in products: 
     product_id = product.id 
     expiry_date = product.expiry_date 
     notification_days = product.notification_days 
     check_date = int((expiry_date - datetime.datetime.today()).days) 
     if notification_days <= check_date: 
      notification = Notification(product_id=product_id) 
      notification.save() 

उत्तर

6

जैसा कि अन्य ने कहा है, Celery can schedule tasks to execute at a specific time

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

@periodic_task(run_every=crontab(hour=7, minute=30, day_of_week="mon")) 
def every_monday_morning(): 
    print("This is run every Monday morning at 7:30") 

कस्टम प्रबंधन command..But समारोह की किस तरह मैं Basecommand inherted कक्षा में देना चाहिए में pip install django-celery

3

आप या तो एक custom management command लिखने और क्रॉन का उपयोग कर इसके निष्पादन निर्धारित कर सकते हैं, या आप celery उपयोग कर सकते हैं।

+0

मैं योजना बना रहा हूँ के माध्यम से स्थापित यह करने के लिए ?? – nabeel

+0

मैं वास्तव में एक और जवाब नहीं बनाना चाहता, इसलिए मैं टिप्पणी में फिट होने की कोशिश करूंगा। बस * बेसकॉमैंड * से विरासत प्राप्त करने वाली कक्षा बनाएं, स्ट्रिंग विशेषताएँ बनाएं: * args * और * help * manage.py --help के लिए एक संक्षिप्त विवरण/वाक्यविन्यास जानकारी युक्त। फिर, एक * हैंडल * विधि परिभाषित करें ... और यही वह है। उस विधि में आप अपना फ़ंक्शन आयात कर सकते हैं और इसे निष्पादित कर सकते हैं। मैं देख सकता हूं कि यह फ़ंक्शन * शायद * एक दृश्य है। लेकिन, जैसा कि मैंने अपने शरीर को देखा है, यह वास्तव में अनुरोध ऑब्जेक्ट का उपयोग नहीं करता है, इसलिए आप इसे तर्कहीन छोड़ सकते हैं और बस इसे कॉल कर सकते हैं। – samu

संबंधित मुद्दे