से बाहरी यूआरएल के लिए एक POST अनुरोध करना मैं django + nginx + gunicorn पर चल रहे किसी वेब एप्लिकेशन के अंदर एक विधि से एक पोस्ट अनुरोध भेज रहा हूं। Django के अपने सर्वर (रनरवर का उपयोग करके) पर निष्पादित होने पर मुझे उसी कोड से 200 प्रतिक्रिया प्राप्त करने में कोई समस्या नहीं है।django + gunicorn + nginx सेटअप
try:
response = requests.post(post_url, data=some_data)
if response.status_code == OK and response.content == '':
logger.info("Request successful")
else:
logger.info("Request failed with response({}): {}".format(response.status_code, response.content))
return response.status_code == OK and response.content == ''
except requests.RequestException as e:
logger.info("Request failed with exception: {}".format(e.message))
return False
मैंने post_url पर सर्वर लॉग की जांच की है, यह वास्तव में इस डेटा के साथ 200 प्रतिक्रिया लौटा रहा है। हालांकि, जब मैं बंदूक और nginx के पीछे ऐप चलाता हूं, तो मुझे प्रतिक्रिया प्राप्त नहीं होती है, (हालांकि अनुरोध भेजा जा रहा है)। प्रयास ब्लॉक के बाद पहली पंक्ति में कोड फंस जाता है, और बंदूकधारी कार्यकर्ता का समय समाप्त होता है (30 सेकंड के बाद)।
यह POST_URL पर अपाचे सर्वर लॉग है:
[14/Sep/2016:13:19:20 +0000] "POST POST_URL_PATH HTTP/1.0" 200 295 "-" "python-requests/2.9.1"
अद्यतन:
मैं उल्लेख करना भूल गया, इस अनुरोध को एक दूसरे पर अमल करने से भी कम समय लेता है, तो यह समय समाप्त नहीं है मुद्दा। विन्यास के साथ कुछ गलत है? मेरे पास मानक nginx + gunicorn सेटअप है, जहां gunicorn nginx में proxy_pass के रूप में सेट किया गया है। मैं अनुमान लगा रहा हूं क्योंकि मैं एक nginx प्रॉक्सी के पीछे हूँ, क्या मुझे आवेदन से एक पोस्ट अनुरोध भेजते समय कुछ अलग करना चाहिए?
जैसा कि आप निदान के लिए कुछ उपयोगी जानकारी प्रदान करते हैं, मुझे लगता है कि आपके पास {} प्रकार की त्रुटि हो सकती है: - ऐसा लगता है कि आप http अनुरोध प्राप्त कर सकते हैं लेकिन परिणाम प्राप्त नहीं कर सकते हैं। सबसे पहले, अपने फ़ायरवॉल को चेकआउट करें (संभवतः 'iptables -L' कमांड हो और देखें कि आपके' INPUT' तालिका पर पोर्ट 80 के बारे में कोई नियम है या नहीं)। - क्या आपका अनुरोध एक गैर विश्वसनीय सर्वर पर https अनुरोध है? - क्या आपने किसी अन्य सर्वर तक पहुंचने का प्रयास किया है? – artragis
आपके पास कितने बंदूकधारी कर्मचारी हैं? – VBart
@artragis मैं django खोल का उपयोग कर अनुरोध को सफलतापूर्वक निष्पादित कर सकता हूं। मैं उसी मशीन पर किसी भी मुद्दे के बिना एक पायथन स्क्रिप्ट में एक ही कोड चला सकता हूं। – SeeknInspYre