मैं अनुसूची का उपयोग करके प्रतिदिन चलाने के लिए एक फ़ंक्शन शेड्यूल करने का प्रयास कर रहा हूं पुस्तकालय।

मेरा स्थानीय Django सर्वर हालांकि हैंग हो जाता है और मेरे कोड में शेड्यूल सहेजने के बाद सिस्टम चेक के दौरान अनुत्तरदायी हो जाता है। यह केवल तभी होता है जब मैं शेड्यूल कोड को हटाता हूं, सिस्टम चेक पास हो जाता है और सर्वर बिना किसी समस्या के चलता है।

मैंने सीधे दस्तावेज़ीकरण से उदाहरण की प्रतिलिपि बनाई है और सर्वर कोई त्रुटि नहीं लौटा रहा है इसलिए मुझे यकीन नहीं है कि समस्या क्या है ..

View.py

.... 

def test_task():
    user = user.objects.get(pk=1)
    user.task_complete = True
    user.save()

schedule.every(10).minutes.do(test_task)

while True:
    schedule.run_pending()
    time.sleep(1)

....

टर्मिनल आउटपुट (यहाँ लटका हुआ है)

chaudim@TD app_one % python3 manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
0
chaudim 13 जिंदा 2021, 20:10

1 उत्तर

सबसे बढ़िया उत्तर

Django अपनी सेटिंग्स के आधार पर फ़ाइलों को लोड (आयात) करता है।

जब आप इस while लूप को वैश्विक दायरे में रखते हैं, तो इसे आयात पर निष्पादित किया जाता है। जब तक यह पूरा नहीं हो जाता तब तक यह लूप को चलाता है। और यह कभी नहीं किया गया है। यदि आप स्वयं देखना चाहते हैं कि क्या यह मूल कारण है, तो आप वहां एक print कथन जोड़ सकते हैं।

आम तौर पर लोग celery से periodic_tasks का उपयोग करते हैं, लेकिन यह आपकी ज़रूरतों के लिए एक ओवरकिल हो सकता है।

मैं एक command ताकि आप python manage.py test_task चला सकें और ओएस स्तर पर बस एक क्रॉन जॉब जोड़ें जो इस कमांड को हर 10 मिनट में चलाएगा।

2
Tom Wojcik 14 जिंदा 2021, 15:03
धन्यवाद, मैंने इसकी पुष्टि करने के लिए लूप में मैन्युअल रूप से अपवाद उठाया। यदि इस पुस्तकालय का उपयोग जारी रखना चाहते हैं तो क्या कोई समाधान है?
 – 
chaudim
18 जिंदा 2021, 21:57
मेरी जानकारी में नहीं, नहीं। आपको कुछ अन्य समाधान मिल सकते हैं लेकिन उनके पास प्रमुख चेतावनी हैं। सचमुच केवल दो विकल्प हैं जो समझ में आते हैं, क्रॉन और अजवाइन।
 – 
Tom Wojcik
19 जिंदा 2021, 11:29