OK i figured that wsgiref (PEP-3333) is currently incompatible with
asyncio. I'm not sure about the motivations of this incompatibility.
Would it be so hard to make a "wsgiref.asyncio_server" extension for
people wanting to use wsgiref for development without having to use a
third-party extension?
Anyways, I'm now using uWSGI for development and testing.
Etienne
Le 2017-11-08 à 15:30, Etienne Robillard a écrit :
This code is compatible with PEP-3333 on Python 3.5.3:
@asyncio.coroutine
def app(environ, start_response):
try:
result = (yield from AsyncIOController().application(environ,
start_response))
except:
raise
else:
#XXX result is a generator. this should not be needed?
yield from result
I updated my server code like so:
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)
#assert isinstance(response, bytes), type(response)
return response(environ, start_response)
@asyncio.coroutine
def __call__(self, environ, start_response, exc_info=None):
result = self.application(environ, start_response)
return result
How can i avoid calling "yield" twice in my test script ?
Thank you,
Etienne
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor
--
Etienne Robillard
tkad...@yandex.com
http://www.isotopesoftware.ca/
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor