अनपैक करने के लिए बहुत सारे मान हैं मेरे पास एक फ्लास्क ऐप है जो किसी अन्य वेब सेवा के साथ संचार करता है। मेरे पास यह त्रुटि है जो केवल तब होती है जब दोनों अनुप्रयोग एक ही सर्वर पर चल रहे हैं, लेकिन मुझे नहीं पता कि स्रोत क्या है। फ्लास्क एप्लिकेशन को /tools
पर अपाचे में WSGIScriptAlias
के माध्यम से होस्ट किया गया है।ValueError के साथ फ्लास्क क्रैश:
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] mod_wsgi (pid=25705): Exception occurred processing WSGI script '/opt/tools-frontend/wsgi.py'.
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] Traceback (most recent call last):
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] File "/opt/tools-frontend/ENV_1/lib/python2.7/site-packages/flask/app.py", line 1701, in __call__
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] return self.wsgi_app(environ, start_response)
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] File "/opt/tools-frontend/ENV_1/lib/python2.7/site-packages/flask/app.py", line 1689, in wsgi_app
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] response = self.make_response(self.handle_exception(e))
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] File "/opt/tools-frontend/ENV_1/lib/python2.7/site-packages/flask/app.py", line 1687, in wsgi_app
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] response = self.full_dispatch_request()
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] File "/opt/tools-frontend/ENV_1/lib/python2.7/site-packages/flask/app.py", line 1361, in full_dispatch_request
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] response = self.make_response(rv)
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] File "/opt/tools-frontend/ENV_1/lib/python2.7/site-packages/flask/app.py", line 1447, in make_response
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] rv = self.response_class(rv, headers=headers, status=status)
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] File "/opt/tools-frontend/ENV_1/lib/python2.7/site-packages/werkzeug/wrappers.py", line 627, in __init__
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] self.headers = Headers(headers)
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] File "/opt/tools-frontend/ENV_1/lib/python2.7/site-packages/werkzeug/datastructures.py", line 836, in __init__
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] self.extend(defaults)
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] File "/opt/tools-frontend/ENV_1/lib/python2.7/site-packages/werkzeug/datastructures.py", line 978, in extend
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] for key, value in iterable:
[Thu May 23 13:11:44 2013] [error] [client 41.164.8.114] ValueError: too many values to unpack
[Thu May 23 13:11:44 2013] [debug] mod_deflate.c(615): [client 41.164.8.114] Zlib: Compressed 590 to 372 : URL /tools/api/login/, referer: http://www.website.com/tools
एपीआई उसी मशीन पर एक अलग डोमेन पर होस्ट किया गया है, इसके लिए लॉग फ़ाइल को देखते हुए, यह सही तरीके से काम कर रहा है।
API कॉल निम्नलिखित कार्यों में किया जाता है:
@app.route('/api/', methods=['GET', 'POST', 'PUT', 'DELETE'])
@app.route('/api/<path:endpoint>', methods=['GET', 'POST', 'PUT', 'DELETE'])
def api(endpoint=None):
# extract POST/PUT variables
dat = request.form
if len(dat) == 0:
# extract GET variables
dat = request.args
# submit request to API
out = call_api(request.method, endpoint, dat, request.files)
return out
जो कहता है:
def call_api(method, endpoint, data=None, files=None):
url = 'https://api.example.com' + endpoint
if method.upper() == "GET":
r = requests.get(url, data=data, verify=False)
# ... similarly for other verbs
return r.text, r.status_code, r.headers
से आप अपने ध्यान में रखते हुए हेडर स्थापित करने के लिए कोशिश कर रहे हैं? क्या आप कोड साझा कर सकते हैं? 'हेडर' का मान 'कोई नहीं' नहीं है, और यह एक नियम नहीं है, लेकिन यह पुन: प्रयोज्य है। Iterable ''(कुंजी, मूल्य)' जोड़े पैदा करना चाहिए, लेकिन यह नहीं है कि यह क्या हो रहा है। – DazWorrall
ऐसा लगता है कि क्रैश तब होता है जब फ्लास्क/वेर्कजेग प्रतिक्रिया को संसाधित करने का प्रयास कर रहा है। आप स्टैक ट्रेस में देख सकते हैं कि मेरा कोड बिल्कुल शामिल नहीं है, शीर्ष फ़ाइल 'फ्लास्क/ऐप/पीई' है। एपीआई कॉल ट्रिगर करने वाली रेखा 'r = request.get (url, data = data, verify = गलत)' – Baruch
क्या आप अपना व्यू कोड साझा कर सकते हैं? प्रतिक्रिया के शीर्षकों को पार्स करने का यह चौंकाने वाला, आपका कोड स्टैक ट्रेस में नहीं है क्योंकि त्रुटि आपके दृश्य में नहीं है, लेकिन इसका मतलब यह नहीं है कि यह कारण नहीं है - यह सब के बाद प्रतिक्रिया उत्पन्न करता है। – DazWorrall