2011-06-08 6 views
9

मुझे कुछ दिलचस्पी है नियमित रूप से नियमित समय अंतराल पर कार्यों का एक निश्चित सेट चल रहा है। जाहिर है, यह cron के लिए एक काम है, है ना?एक नियमित घटना का निर्धारण करना: क्रोन/क्रॉन विकल्प (सेलेरी समेत)

दुर्भाग्य से, इंटरनेट वहां कुछ असहमति में प्रतीत होता है।

मुझे अपने सेटअप के बारे में थोड़ा विस्तार करने दें। सबसे पहले, मेरा विकास पर्यावरण विंडोज़ में है, जबकि मेरा उत्पादन वातावरण Webfaction (लिनक्स) पर होस्ट किया गया है। विंडोज पर कोई असली क्रॉन नहीं है, है ना? इसके अलावा, मैं Django का उपयोग करता हूं! और Django के लिए क्या सुझाव दिया गया है?

Celery बेशक! दुर्भाग्यवश, सेलेरी स्थापित करना मेरे लिए एक शाब्दिक दुःस्वप्न रहा है - कृपया Error message 'No handlers could be found for logger “multiprocessing”' using Celery देखें। और यह केवल सेलेरी के साथ हुई समस्याओं में से एक है। अन्य में सॉकेट त्रुटि शामिल होती है जो कि समस्या को पाने के लिए मैं केवल एकमात्र हूं।

मुझे गलत मत समझो, सेलेरी वास्तव में अच्छा लगता है। दुर्भाग्यवश, समर्थन की कमी दिखाई देती है, और कुछ पसंदीदा सीमाएं इसके पसंदीदा बैकएंड में बनाई गई हैं, RabbitMQ। दुर्भाग्य से, कोई फर्क नहीं पड़ता कि कोई प्रोग्राम कितना अच्छा है, अगर यह काम नहीं करता है, तो यह काम नहीं करता है!

यही वह जगह है जहां मुझे उम्मीद है कि आप सभी अंदर आ सकते हैं। मैं क्रॉन या क्रॉन समकक्ष के बारे में जानना चाहता हूं, जिसे विंडोज और लिनक्स पर्यावरण दोनों में समान रूप से (अधिमानतः समान रूप से) स्थापित किया जा सकता है।

(मैं अब के बारे में दो सप्ताह के लिए अजवाइन के साथ संघर्ष कर दिया गया है और दुर्भाग्य से मुझे लगता है कि यह तौलिया में टॉस और उस पर कम से कम अब के लिए छोड़ देना, का समय है।)

+1

आप विंडोज़ पर क्यों विकसित करना चाहते हैं लेकिन लिनक्स पर तैनाती करना चाहते हैं? ऐसा लगता है कि आप इन तरह के कई सिरदर्द के लिए खुद को स्थापित कर रहे हैं। –

+0

पूरी तरह से मेरी पसंद नहीं है। मैंने अपने कंप्यूटरों में से किसी एक को बदलने या इसे विभाजित करने पर विचार किया है, लेकिन आखिरकार इसके समकक्ष समस्याओं के अपने हिस्से हैं। बस स्थिति की सबसे अच्छी स्थिति बनाने की तलाश में है। – RHH

+1

वूबी इंस्टॉलर अब आपके लिए दोबारा बूट करने के लिए आसान बनाता है। – goh

उत्तर

11

एक सरल, गैर अजवाइन चीजों से संपर्क करने का तरीका आपके एसिंक्रोनस या शेड्यूल किए गए कार्यों को करने के लिए Django custom management commands बनाना होगा।

फिर, विंडोज़ पर, आप इन कार्यों को शेड्यूल करने के लिए at कमांड का उपयोग करते हैं। लिनक्स पर, आप cron का उपयोग करते हैं।

यदि आप विकास वातावरण के लिए कर सकते हैं तो मैं विंडोज़ को डुबकी देने की भी दृढ़ता से अनुशंसा करता हूं। आपका जीवन लिनक्स या मैक ओएसएक्स पर भी बेहतर होगा। उदाहरण के लिए उबंटू के साथ एक अतिरिक्त या पुरानी मशीन का पुन: प्रयोजन करें, या अपने विंडोज बॉक्स पर एक वीएम में उबंटू चलाएं।

14

मुझे एक ही समस्या थी, और इसे अजवाइन (बहुत जटिल) या क्रोन (आवेदन के लिए बाहरी) के साथ हल करने की कोशिश कर रहा था और Advanced Python Scheduler खोजने के लिए समाप्त हो गया। केवल इसका उपयोग शुरू कर दिया है, लेकिन यह उचित रूप से परिपक्व और स्थिर लगता है, सभ्य दस्तावेज है और इसमें कई शेड्यूलिंग प्रारूप (जैसे क्रॉन शैली) लगेगा।

documentation से, एक विशिष्ट अंतराल पर एक फ़ंक्शन चला रहा है।

from apscheduler.scheduler import Scheduler 
sched = Scheduler() 
sched.start() 
def hello_world(): 
    print "hello world" 
sched.add_interval_job(hello_world,seconds=10) 

यह गैर अवरुद्ध है, और मैं कुछ सुंदर बस मेरी urls.py से मॉड्यूल आयात करके समान चलाते हैं। उम्मीद है की यह मदद करेगा।

0

https://github.com/andybak/django-cron

एक भी क्रॉन कार्य द्वारा उत्प्रेरित लेकिन सभी निर्धारण और विन्यास अजगर में किया जाता है।

0

Django Chronograph एक शानदार विकल्प है। आपको केवल एक क्रॉन सेट अप करने की आवश्यकता है, फिर django व्यवस्थापक में सबकुछ करें।आप django प्रबंधन से कार्यों/आदेशों को शेड्यूल कर सकते हैं।