google app engine - Google एप इंजिन में क्रॉन जॉब काम नहीं कर रहा है



google-app-engine google-cloud-platform (1)

आपका ऐप। Yaml फ़ाइल एक मानक वातावरण हैंडलर्स तत्व को एक लचीला वातावरण कॉन्फ़िगरेशन में मिला रही है , इसलिए इसे संभवत: अनदेखा कर दिया गया है। संभवतः आप डेवलपर कंसोल में एप के लॉग में क्रॉन अनुरोध देख सकते हैं (हालांकि, त्रुटियों के साथ होने की संभावना है)।

आपको अपने ऐप कोड के अंदर /cronapp लिए एक हेन्डलर जोड़ने की आवश्यकता है, न कि /cronapp में पूरी तरह से सुनिश्चित नहीं है कि आप ऐसा कैसे करते हैं (मैं अभी भी केवल मानक पर्यावरण का उपयोग कर रहा हूं), यह आपके ऐप और / या इसके ढांचे पर निर्भर करता है फ्लास्क उदाहरण के लिए हैलो वर्ल्ड कोड की समीक्षा पर एक नज़र डालें।

अद्यतन करें:

मैं पूरी तरह से सही नहीं हो सकता है, मैं दस्तावेज़ीकरण पर अपने जवाब पर आधारित था लेकिन मैंने कुछ विसंगतियों पर गौर किया है (मैंने इसके लिए कुछ दस्तावेज़ प्रतिक्रिया Google को भेजी है)।

लचीला वातावरण क्रोन के लिए सुरक्षा यूआरएल (जो ज्यादातर मानक पर्यावरण समकक्ष से प्रतिलिपि हुआ होता है) कुछ समाधानों का उल्लेख करता है:

  • एक वास्तव में login: admin पर आधारित login: admin लिए login: admin विकल्प:

आप login: admin जोड़कर यूआरएल को प्रतिबंधित कर सकते हैं login: admin app.yaml में app.yaml । अधिक जानकारी के लिए सुरक्षा यूआरएल देखें

लेकिन handler का ऐप अपने अनुप्रयोग को app.yaml के साथ कॉन्फ़िगर करने में नहीं है और सुरक्षित यूआरएल एक असामान्य टैग की तरफ इशारा कर रहे हैं। इसलिए मुझे यकीन नहीं है कि यह वास्तव में काम कर रहा है या नहीं।

  • दूसरा, X-Appengine-Cron हेडर (मानक पर्यावरण के समान) पर आधारित है:

क्रोन सेवा से अनुरोध में एक HTTP हैडर भी शामिल होगा:

X-Appengine-Cron: true

X-Appengine-Cron हेडर Google App Engine द्वारा आंतरिक रूप से सेट किया गया है। यदि आपके अनुरोध हैंडलर को यह शीर्षलेख मिला है तो यह भरोसा कर सकता है कि अनुरोध एक क्रॉन अनुरोध है यदि शीर्ष लेख आपके ऐप के लिए बाहरी उपयोगकर्ता अनुरोध में मौजूद है, तो यह छीन लिया गया है, आवेदन के प्रशासक में लॉग इन करने के अनुरोधों को छोड़कर, परीक्षण प्रयोजनों के लिए हेडर सेट करने की अनुमति है।

लेकिन हटाए गए हेडर में यह उल्लेख किया गया है कि:

इसके अलावा, कुछ चयनित हेडर जो निम्नलिखित पैटर्न से मेल खाते हैं वे अनुरोध से हटा दिए जाते हैं:

  • X-Appengine-*

यह स्पष्ट नहीं है कि अगर यह X-Appengine-Cron तक फैलता है या नहीं। यह आजमाने के काबिल है। यह (मानक env, webapp2- आधारित) क्रॉन हैंडलर कोड में मेरा चेक है:

    if self.request.headers.get('X-AppEngine-Cron') is None:
        self.abort(403)  # HTTPForbidden

मैंने इस Google क्लाउड ट्यूटोरियल से फ्लास्क पर मूल अजगर 3 ट्यूटोरियल वेबसाइट ली है और मैं इसे सेट करने में सक्षम हूं और वेबसाइट ठीक काम करती है।

इसके अलावा, मैं एक अजगर स्क्रिप्ट चला रहा था जो कुछ डेटा एकत्र करने के लिए हर रोज चलती है, लेकिन क्रॉन नौकरी अभी काम नहीं करती। मैंने लॉगिन भी जोड़ा: व्यवस्थापक किसी को भी उस यूआरएल का इस्तेमाल करने के लिए प्रतिबंधित करने के लिए

cron.yaml

cron:
- description: test dispatch vs target
  url: /cronapp
  schedule: every 5 hours

app.yaml

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  python_version: 3

handlers:
- url: /cronapp
  script: cronapp.py
  login: admin

मैं इसे http://myproject.appspot.com/cronapp के रूप में कह रहा हूं काम भी नहीं करता है और 404 रिटर्न करता है। मैं क्या कर रहा हूँ गलत? किसी भी मदद की सराहना की है