[Flask] How to debug exceptions on the production server?

Corey Boyle coreybrett at gmail.com
Fri Apr 22 08:18:03 EDT 2016


You could also have your production app send you an email with details
about the exception.

The Flask book covers that. http://flaskbook.com/
On Apr 22, 2016 3:38 AM, "Alejo Arias" <alejoar at gmail.com> wrote:

> Hi Gabor,
>
> I'm not sure why your code raises a TypeError, it doesn't seem to be wrong
> to me, maybe someone else can help you there.
>
> What I can tell you though is a way to avoid using the try-except at all.
> I would use the 'get' method of the dictionary so that trying to access a
> key that doesn't exist doesn't raise an exception.
>
> For example:
>
> >>> d = {}
> >>> x = d.get('name')
> >>> x is None
> True
>
> You can also pass a second parameter to default the value to something
> else instead of None:
>
> >>> x = d.get('name', 0)
> >>> x
> 0
>
> Hope that helps.
>
> Regards,
> Alejo
>
> On 22 April 2016 at 08:06, Gabor Szabo <gabor at szabgab.com> wrote:
>
>> Hi,
>>
>> I had some code that on the development server running in debug mode
>> worked fine, but on the production server gave me an "Internal Error". The
>> cause was some difference in data. I assumed a dictionary key to be always
>> present, but on the production server some of the data had that key missing.
>>
>> My real issue however was really that I have not got any indication of
>> the nature of the problem.
>> The error logs (both uwsgi and nginx) had no information about the error.
>> After seeing the "Internal Error" page I wrapped the code in a try-block
>> and tried to print the exception. A very simplified version of the code
>> that already demonstrate the problem looks like this:
>>
>> @app.route("/sample")
>> def sample():
>>     d = {
>>     }
>>     try:
>>         x = d['name']
>>     except Exception as e:
>>         return(type(e))
>>     return 'ok'
>>
>>
>> This code just gives me further "Internal Errors" on the production
>> server. Apparently the call to type(e) generates another exception.
>>
>> In debug mode it gives me a
>>
>> TypeError: exceptions.KeyError object is not an iterator
>>
>> error.
>>
>> Am I doing something totally wrong here?
>>
>> Gabor
>>
>> _______________________________________________
>> Flask mailing list
>> Flask at python.org
>> https://mail.python.org/mailman/listinfo/flask
>>
>>
>
> _______________________________________________
> Flask mailing list
> Flask at python.org
> https://mail.python.org/mailman/listinfo/flask
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/flask/attachments/20160422/f8cda497/attachment-0001.html>


More information about the Flask mailing list