मेरे जीवन के लिए, मैं यह नहीं समझ सकता कि मेरे फ्लास्क ऐप में मेरी त्रुटियां कहां से आ रही हैं, जब मैं इसे बंदूक के माध्यम से चलाता हूं, क्योंकि मैं यह नहीं समझ सकता कि स्टैक ट्रेस कैसे प्रदर्शित किया जाए।फ्लास्क + गनिकॉर्न ऐप में अपवाद कैसे देखें?
उदाहरण के लिए, मान लीजिए कि मेरे पास बहुत सरल है "हैलो, वर्ल्ड!" फ्लास्क में लिखा ऐप।
import logging
import os
from flask import Flask
app = Flask(__name__)
app.debug = True
@app.route('/')
def hello():
raise Exception('Exception raised!')
return 'Hello World!'
if __name__ == '__main__':
app.run()
अगर मैं python hello.py
के साथ इस चलाते हैं, तो सब कुछ ठीक है, के रूप में मैं एक बहुत ही उपयोगी स्टैक ट्रेस मिलती है: अगर मैं के साथ एक Procfile बनाने
(venv)142:helloflask $ python hello.py
* Running on http://127.0.0.1:5000/
* Restarting with reloader
127.0.0.1 - - [30/Jun/2014 18:52:42] "GET/HTTP/1.1" 500 -
Traceback (most recent call last):
File "/Users/grautur/code/helloflask/venv/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/Users/grautur/code/helloflask/venv/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Users/grautur/code/helloflask/venv/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Users/grautur/code/helloflask/venv/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/Users/grautur/code/helloflask/venv/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/grautur/code/helloflask/venv/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/grautur/code/helloflask/venv/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/grautur/code/helloflask/venv/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/grautur/code/helloflask/hello.py", line 10, in hello
raise Exception('Exception raised!')
Exception: Exception raised!
हालांकि,
web: gunicorn hello:app
और फिर foreman start -p 8000
के साथ ऐप शुरू करें, तो मुझे कुछ भी नहीं दिखाई देता है। बस एक "आंतरिक सर्वर त्रुटि" वेबपेज।
$ foreman start -p 8000
18:56:10 web.1 | started with pid 36850
(...nothing else is ever displayed...)
मैं अपने फ्लास्क + गनिकॉर्न ऐप को और अधिक उपयोगी डीबगिंग संदेश दिखाने के लिए कैसे प्राप्त करूं? मैंने app.debug = True
(और इसके विभिन्न पुनरावृत्तियों) को सेट करने का प्रयास किया, क्योंकि ऐसा लगता है कि यह अन्य स्टैक ओवरफ्लो पोस्ट सुझाए गए हैं, लेकिन ऐसा कुछ भी नहीं दिख रहा है।
हाय, क्या आपको कोई समाधान मिला है? – DavidLin
गनिकॉर्न डिफ़ॉल्ट रूप से stderr पर लॉगिंग कर रहा है और एकमात्र कारण है जो मैं सोच सकता हूं कि आप जो देखते हैं उसे समझा सकते हैं, अगर गनिकोर्न फ़ाइल में लॉग इन करता है (इस मामले में आपको stderr या stdout पर कुछ भी नहीं मिलता है)। क्या आपने बीटीडब्ल्यू की कोशिश की है? अर्थात। 'वेब के साथ फाइलों पर लॉग इन करने के लिए बंदूक को कॉन्फ़िगर करने के लिए: gunicorn --error-logfile = hello-gunicorn.log --access-logfile = हैलो-गनिकॉर्न-access.log हैलो: ऐप' और देखें कि वहां क्या लॉग हो जाता है? – dimi