Asynchronous Fan Out/In for Pyramid.
Project description
Run an asyncio loop in it's own thread for scheduling awaitables from within Pyramid views.
This adds request property loop
and request methods wait_for
,
wait_results
, and await
.
The loop
property returns the loop running
in it's own thread. Use this loop with asyncio.run_coroutine_threadsafe
to run awaitables. For example:
import asyncio
from concurrent import futures
def my_view(request):
running = asyncio.run_coroutine_threadsafe(my_coroutine(), request.loop)
done, not_done = futures.wait([running, ...], timeout=3)
results = [ftr.result() for ftr in done]
return {'done': results}
The wait_for
method reduces the above boiler plate by waiting for the
futures. Example usage
def my_view(request):
done, not_done = request.wait_for([my_coroutine(), ...])
results = [ftr.result() for ftr in done]
return {'done': results}
The wait_results
method reduces the boiler plate further by returning
the results after waiting. This is useful if you don't care about
unfinished tasks. Example usage:
def my_view(request):
results = request.wait_results([my_coroutine(), ...])
return {'done': results}
The await
method runs a single awaitable and
blocks until it's results are complete or timeout passes.
Example usage:
from frond import AwaitableTimeout
def my_view(request):
try:
result = request.await(my_coroutine(), timeout=3)
except AwaitableTimeout:
result = 'not completed'
return {'result': result}
Use as any other Pyramid plugin:
config.include('frond')
Currently this package only supports Python 3 (and only tested on Python >=3.6).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file frond-0.0.4.tar.gz
.
File metadata
- Download URL: frond-0.0.4.tar.gz
- Upload date:
- Size: 2.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6fa29333f6b4c3f0328909ed61b2865de195267bfbbcd21edc800318be07c2ad |
|
MD5 | 1d2f9d23d9549774cc3496de271c6514 |
|
BLAKE2b-256 | f2c847ac7ef27af8b74e8e0b26645458bd6b6d8c094f3709c86b61e0d55be131 |
File details
Details for the file frond-0.0.4-py3-none-any.whl
.
File metadata
- Download URL: frond-0.0.4-py3-none-any.whl
- Upload date:
- Size: 3.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 532c573323db9d2960cc175d7e1a9406d29877623f1eff4eb2b5f36f6f532b73 |
|
MD5 | 7d25c171f3d9edb622032107a16162c1 |
|
BLAKE2b-256 | 26738ade4da3f9d937195fe886ec4908b9f7c0f30981e705dd401b427e0a75c4 |