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

Reply via email to