[Tutor] asyncio and wsgiref problem

Etienne Robillard tkadm30 at yandex.com
Wed Nov 8 08:49:24 EST 2017


Hi,

I'm trying to implement the asyncio.coroutine decorator in my wsgi app.

Here's my server code:

class AsyncIOController(WSGIController):
     def __init__(self, settings=None, executor=None, loop=None
         ):
         super(AsyncIOController, self).__init__(settings)
         # asyncio config.
         self._executor = executor
         self._loop = loop or get_event_loop()

     #@asyncio.coroutine
     def get_response(self, request=None, method='GET', data={}):
         response = super(AsyncIOController, self).get_response(request)
         return response

     @asyncio.coroutine
     def application(self, environ, start_response):
         with sessionmanager(environ):
             request.environ.update(environ)
             response = self.get_response(request=request)(environ, 
start_response)
         #assert isinstance(response, bytes), type(response)
         return response

     @asyncio.coroutine
     def __call__(self, environ, start_response, exc_info=None):
         result = self.application(environ, start_response)
         return result

My test script:


@asyncio.coroutine
def app(environ, start_response):
     try:
         result = (yield from AsyncIOController().application(environ, 
start_response))
         return result
     except:
         raise

if __name__ == '__main__':
     server = simple_server.make_server('127.0.0.1', 8000, app)
     server.serve_forever()

Should I attempt to decorate the AsyncIOController.get_response method 
with the asyncio.coroutine method ?

Any ideas how to fix this script ?

Thank you in advance,

Etienne



More information about the Tutor mailing list