Source code for aiopyramid.tweens

"""
The aiopyramid.tweens module is deprecated. See example in the docs:
http://aiopyramid.readthedocs.io/features.html#tweens.
"""

import asyncio
import warnings

from .helpers import synchronize

warnings.warn(__doc__, DeprecationWarning)


[docs]def coroutine_logger_tween_factory(handler, registry): """ Example of an asynchronous tween that delegates a synchronous function to a child thread. This tween asynchronously logs all requests and responses. """ # We use the synchronize decorator because we will call this # coroutine from a normal python context @synchronize # this is a coroutine @asyncio.coroutine def _async_print(content): # print doesn't really need to be run in a separate thread # but it works for demonstration purposes yield from asyncio.get_event_loop().run_in_executor( None, print, content ) def coroutine_logger_tween(request): # The following calls are guaranteed to happen in order but they do not # block the event loop # print the request on the aio event loop without needing to say yield # at this point, other coroutines and requests can be handled _async_print(request) # get response, this should be done in this greenlet # and not as a coroutine because this will call # the next tween and subsequently yield if necessary response = handler(request) # print the response on the aio event loop _async_print(request) # return response after logging is done return response return coroutine_logger_tween