Skip to main content

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


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

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.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page