Hello,

I wrote a small program that runs a simple WSGI server but it is silently dying after receiving a request from curl. I used the stacklesswsgi.py module below and tested on both stackless 2.6.1 and 2.5.2 (Mac OS) You can reproduce this easily with the following code:

(get stacklesswsgi.py from http://code.google.com/p/stacklessexamples/wiki/StacklessWSGI )

import stackless
def wsgi_app(environ, start_response):
    start_response('200 OK', [('Content-type', 'text/plain')])
    return ['hello kitty\n']
if __name__ == '__main__':
    import stacklesswsgi
    s = stacklesswsgi.Server(('127.0.0.1', 8080), wsgi_app)
    s.start()

This server works perfectly fine when sending requests from firefox, but if I send a request from curl:

$ curl http://localhost:8080/

The request is handled properly, and then the server dies, stackless.run() exits, and the program silently dies. It seems the tasklet acting as the listening server dies when entering "self.accept_channel.receive()" (stacklesswsgi.py:171) and receive() never returns. receive doesn't raise an exception nor will it execute code wrapped into a 'finally' block. I'm very new to stackless so I want to refrain from making too assumptions, but a 'finally' block not being executed might indicate a bug in the interpreter.

Also the asyncore tasklet continues running even after the server tasklet dies.

After spending a couple hours troubleshooting and googling, I am totally out of ideas. Any help would be greatly appreciated!

_______________________________________________
Stackless mailing list
[email protected]
http://www.stackless.com/mailman/listinfo/stackless

Reply via email to