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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
|