Hi Graham,
On modwsgi 3.4 + python 3.2, this script behaves as expected. Thanks for
fixing it!
# vim:encoding=utf-8:ts=2:sw=2:expandtab
# vim:syntax=python
class Logger:
Stream = None
@classmethod
def Log(cls, s):
cls.Stream.write(str(s) + "\n")
def FunctionCalledByWSGIFile():
try:
RenderHTML()
except Exception as e:
Logger.Log('EXCEPTION')
Logger.Log(e)
def RenderHTML():
# This way works fine
raise Exception("foo")
# This way causes 500 internal server error
data = Select()
def Select():
raise Exception("foo")
def application(environ, start_response):
Logger.Stream = environ['wsgi.errors']
status = '200 OK'
output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
FunctionCalledByWSGIFile()
return [output]
On Thu, Sep 6, 2012 at 2:22 AM, Jason Garber <[email protected]> wrote:
> Hi Graham,
>
> Actually, I just installed 3.4 on my servers yesterday, so I will check
> this out and get back to you soon.
>
> Thanks!
> Jason Garber
>
>
> On Thu, Sep 6, 2012 at 1:41 AM, Graham Dumpleton <
> [email protected]> wrote:
>
>> Were you ever able to reproduce this with mod_wsgi 3.4?
>>
>> On 15 July 2012 10:32, Jason Garber <[email protected]> wrote:
>> > Great. Will try to reproduce first. Thanks!
>> >
>> > On Jul 14, 2012 8:30 PM, "Graham Dumpleton" <[email protected]
>> >
>> > wrote:
>> >>
>> >> Can you try 3.4 from the source code repo.
>> >>
>> >> http://code.google.com/p/modwsgi/wiki/ChangesInVersion0304
>> >>
>> >> I recollect finding some issues with Python 3.X support which may have
>> >> silently fixed, but don't recollect what they were.
>> >>
>> >> Graham
>> >>
>> >> On 14 July 2012 17:15, Jason Garber <[email protected]> wrote:
>> >> > Hi Graham,
>> >> >
>> >> > I see you are using python 2. I neglected to mention we are on
>> Python
>> >> > 3.1.4.
>> >> >
>> >> > I will test with your test script and see if I can reproduce.
>> >> >
>> >> > Thanks!
>> >> > Jason
>> >> >
>> >> > On Jul 14, 2012 8:06 PM, "Graham Dumpleton" <
>> [email protected]>
>> >> > wrote:
>> >> >>
>> >> >> On 12 July 2012 16:45, Jason Garber <[email protected]> wrote:
>> >> >> > Hello,
>> >> >> >
>> >> >> > I have a very odd situation.
>> >> >> >
>> >> >> > mod_wsgi 3.3 on RHEL 5 x86_64
>> >> >> >
>> >> >> >
>> >> >> > If I raise an exception in an html-generating function, it is
>> caught
>> >> >> > just
>> >> >> > fine by my WSGI framework with a try/except block.
>> >> >> >
>> >> >> > If I raise the exact same exception within a plain function called
>> >> >> > from
>> >> >> > the
>> >> >> > same place, it causes a 500 internal server error: mod_wsgi
>> >> >> > (pid=17007):
>> >> >> > Exception occurred processing WSGI script
>> >> >> >
>> >> >> >
>> '/home/jason/Code/WhiteBoot4/DevLevel.2/TMTManage/WSGI/Dashboard.wsgi'
>> >> >> >
>> >> >> > I can place an explicit try/except around that exact spot, and it
>> is
>> >> >> > completely skipped. It's really bizarre. Any ideas?
>> >> >> >
>> >> >> > Here is a simple example. Note that I have actually reproduced it
>> >> >> > with
>> >> >> > this
>> >> >> > level of simplicity.
>> >> >> >
>> >> >> > def FunctionCalledByWSGIFile():
>> >> >> > try:
>> >> >> > RenderHTML()
>> >> >> > except Exception as e:
>> >> >> > # output error here
>> >> >> > ...
>> >> >> >
>> >> >> > def RenderHTML():
>> >> >> > ...
>> >> >> > # This way works fine
>> >> >> > raise Exception("foo")
>> >> >> > ...
>> >> >> > # This way causes 500 internal server error
>> >> >> > data = Select()
>> >> >> >
>> >> >> > def Select():
>> >> >> > raise Exception("foo")
>> >> >>
>> >> >> I have no problem with the following constructed based on what you
>> >> >> give.
>> >> >>
>> >> >> In both cases will print 'EXCEPTION foo' to log file.
>> >> >>
>> >> >> There is no 500 error as the exception is not reraised in that
>> example.
>> >> >>
>> >> >> Try using a blind 'except' with type and then use:
>> >> >>
>> >> >> except Exception as e:
>> >> >> print 'EXCEPTION', e
>> >> >>
>> >> >> except:
>> >> >> import traceback, sys
>> >> >> traceback.print_exception(*sys.exc_info())
>> >> >>
>> >> >> to see what happens.
>> >> >>
>> >> >> Original full test script I used is:
>> >> >>
>> >> >> def FunctionCalledByWSGIFile():
>> >> >> try:
>> >> >> RenderHTML()
>> >> >> except Exception as e:
>> >> >> print 'EXCEPTION', e
>> >> >>
>> >> >> def RenderHTML():
>> >> >> # This way works fine
>> >> >> #raise Exception("foo")
>> >> >>
>> >> >> # This way causes 500 internal server error
>> >> >> data = Select()
>> >> >>
>> >> >> def Select():
>> >> >> raise Exception("foo")
>> >> >>
>> >> >> def application(environ, start_response):
>> >> >> status = '200 OK'
>> >> >> output = 'Hello World!'
>> >> >>
>> >> >> response_headers = [('Content-type', 'text/plain'),
>> >> >> ('Content-Length', str(len(output)))]
>> >> >> start_response(status, response_headers)
>> >> >>
>> >> >> FunctionCalledByWSGIFile()
>> >> >>
>> >> >> return [output]
>> >> >>
>> >> >> --
>> >> >> You received this message because you are subscribed to the Google
>> >> >> Groups
>> >> >> "modwsgi" group.
>> >> >> To post to this group, send email to [email protected].
>> >> >> To unsubscribe from this group, send email to
>> >> >> [email protected].
>> >> >> For more options, visit this group at
>> >> >> http://groups.google.com/group/modwsgi?hl=en.
>> >> >>
>> >> > --
>> >> > You received this message because you are subscribed to the Google
>> >> > Groups
>> >> > "modwsgi" group.
>> >> > To post to this group, send email to [email protected].
>> >> > To unsubscribe from this group, send email to
>> >> > [email protected].
>> >> > For more options, visit this group at
>> >> > http://groups.google.com/group/modwsgi?hl=en.
>> >>
>> >> --
>> >> You received this message because you are subscribed to the Google
>> Groups
>> >> "modwsgi" group.
>> >> To post to this group, send email to [email protected].
>> >> To unsubscribe from this group, send email to
>> >> [email protected].
>> >> For more options, visit this group at
>> >> http://groups.google.com/group/modwsgi?hl=en.
>> >>
>> > --
>> > You received this message because you are subscribed to the Google
>> Groups
>> > "modwsgi" group.
>> > To post to this group, send email to [email protected].
>> > To unsubscribe from this group, send email to
>> > [email protected].
>> > For more options, visit this group at
>> > http://groups.google.com/group/modwsgi?hl=en.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "modwsgi" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/modwsgi?hl=en.
>>
>>
>
--
You received this message because you are subscribed to the Google Groups
"modwsgi" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/modwsgi?hl=en.