Skip to main content

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).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

frond-0.0.4.tar.gz (2.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

frond-0.0.4-py3-none-any.whl (3.4 kB view details)

Uploaded Python 3

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

Hashes for frond-0.0.4.tar.gz
Algorithm Hash digest
SHA256 6fa29333f6b4c3f0328909ed61b2865de195267bfbbcd21edc800318be07c2ad
MD5 1d2f9d23d9549774cc3496de271c6514
BLAKE2b-256 f2c847ac7ef27af8b74e8e0b26645458bd6b6d8c094f3709c86b61e0d55be131

See more details on using hashes here.

File details

Details for the file frond-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for frond-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 532c573323db9d2960cc175d7e1a9406d29877623f1eff4eb2b5f36f6f532b73
MD5 7d25c171f3d9edb622032107a16162c1
BLAKE2b-256 26738ade4da3f9d937195fe886ec4908b9f7c0f30981e705dd401b427e0a75c4

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.4 This release

2 files

0.0.3

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page