2011-09-28 12 views
6

के साथ स्थानीय रूप से चलती हैं I this question जैसी ही समस्या के साथ शुरू हुई। चूंकि उत्तरों में से एक सुझाव देता है कि कोई भी एसएसएल के बिना ऐप चलाने के द्वारा उस विशेष समस्या से बच सकता है। लेकिन चूंकि फेसबुक कुछ ही दिनों (1 अक्टूबर 2011) में ऐप्स के लिए https को लागू करने के लिए सेट है, जो ऐसे समाधान की तरह लगता है जो नहीं टिकेगा। मैं पहली बार exampleapp.py में ssl app.run में (लाइन 149 के आसपास सक्षम करने के लिए करने की कोशिश की तो जैसा:।पाइथन के लिए हेरोकू उदाहरण ऐप प्राप्त करने में समस्याएं एसएसएल

app.run(host='0.0.0.0', port=port, ssl_context='adhoc') 

पहले तो कोशिश यह शुरू में विफल रहा है लापता OpenSSL मॉड्यूल के बारे में शिकायत मिली है कि कैसे ठीक करने के सुझाव के एक जोड़े। जब ऐप्स को एक्सेस करने की कोशिश कर रहा

(myapp)$ foreman start 
10:35:25 web.1  | started with pid 26934 
10:35:26 web.1  | * Running on https://0.0.0.0:5000/ 
10:35:26 web.1  | * Restarting with reloader 

लेकिन तब: कि वहाँ नेट पर, और ऐसा करने के लिए चुनें:

(myapp)$ pip install pyopenssl 

अब कोई शुरुआत में शिकायतों

10:35:31 web.1  | ---------------------------------------- 
10:35:31 web.1  | Exception happened during processing of request from ('127.0.0.1', 61118) 
10:35:31 web.1  | Traceback (most recent call last): 
10:35:31 web.1  | File "/usr/local/Cellar/python/2.7.1/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock 
10:35:31 web.1  |  self.process_request(request, client_address) 
10:35:31 web.1  | File "/usr/local/Cellar/python/2.7.1/lib/python2.7/SocketServer.py", line 310, in process_request 
10:35:31 web.1  |  self.finish_request(request, client_address) 
10:35:31 web.1  | File "/usr/local/Cellar/python/2.7.1/lib/python2.7/SocketServer.py", line 323, in finish_request 
10:35:31 web.1  |  self.RequestHandlerClass(request, client_address, self) 
10:35:31 web.1  | File "/usr/local/Cellar/python/2.7.1/lib/python2.7/SocketServer.py", line 639, in __init__ 
10:35:31 web.1  |  self.handle() 
10:35:31 web.1  | File "path_to_myapp/lib/python2.7/site-packages/werkzeug/serving.py", line 189, in handle 
10:35:31 web.1  |  return rv 
10:35:31 web.1  | UnboundLocalError: local variable 'rv' referenced before assignment 
10:35:31 web.1  | ---------------------------------------- 
10:35:31 web.1  | Unhandled exception in thread started by <function inner at 0x10139e050> 
10:35:31 web.1  | Traceback (most recent call last): 
10:35:31 web.1  | File "path_to_myapp/lib/python2.7/site-packages/werkzeug/serving.py", line 599, in inner 
10:35:31 web.1  |  passthrough_errors, ssl_context).serve_forever() 
10:35:31 web.1  | File "path_to_myapp/lib/python2.7/site-packages/werkzeug/serving.py", line 355, in serve_forever 
10:35:31 web.1  |  HTTPServer.serve_forever(self) 
10:35:31 web.1  | File "/usr/local/Cellar/python/2.7.1/lib/python2.7/SocketServer.py", line 227, in serve_forever 
10:35:31 web.1  |  self._handle_request_noblock() 
10:35:31 web.1  | File "/usr/local/Cellar/python/2.7.1/lib/python2.7/SocketServer.py", line 287, in _handle_request_noblock 
10:35:31 web.1  |  self.shutdown_request(request) 
10:35:31 web.1  | File "/usr/local/Cellar/python/2.7.1/lib/python2.7/SocketServer.py", line 459, in shutdown_request 
10:35:31 web.1  |  request.shutdown(socket.SHUT_WR) 
10:35:31 web.1  | TypeError: shutdown() takes exactly 0 arguments (1 given) 

इस बारे में क्या करना है? क्या यह गलत पायथन संस्करण है या बस मुझे कुछ अन्य मौलिक बात याद आ रही है?

उत्तर

1

यह वेर्कज़ुग में एक बग है, जिसे fixed मिला।

require.txt फ़ाइल में Werkzeug संस्करण को कम से कम 0.8.2 में बदलें और अपग्रेड करने के लिए pip install -r requirements.txt चलाएं।

1

यह पता लगाने में कठिनाई है कि "आरवी" स्थानीय पर्यावरण, स्क्रिप्ट्स, स्थापित मॉड्यूल और वर्कज़ेग कोड का निरीक्षण किए बिना विफल क्यों होता है, जिसका दावा है कि एसएसएल v0.6 से आगे समर्थित है।

सबसे आसान समाधान है आपकी स्थानीय मशीन पर वेब सर्वर apache के दादा को स्थापित करना, mod_ssl मॉड्यूल में जोड़ें और उन SSL certs जेनरेट करें। अंत में, अपने ऐप को चलाने और चलाने के लिए फ्लास्क के help page में वर्णित अनुसार mod_wsgi जोड़ें।

नोट: इंस्टॉलेशन पहले टाइमर के लिए चुनौतीपूर्ण हो सकता है, लेकिन एक बार जब आप जा रहे हैं, तो अपाचे एक वर्कहोर है और पिछले 15 वर्षों में मेरे लिए बेहद विश्वसनीय है।

संबंधित मुद्दे