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.

Reply via email to