Skip to main content

Async functions to compare with anyio and asyncio, and toolkit to read excel with async/await.

Project description

asynctor

Python Versions LatestVersionInPypi GithubActionResult Coverage Status Mypy coverage Ruff

Some async functions that using anyio, and toolkit for excel read.

Installation

$ pip install asynctor
---> 100%
Successfully installed asynctor

Or use poetry:

poetry add asynctor

Usage

  • bulk_gather/gather/run
>>> import asynctor
>>> async def foo():
...     return 1
...
>>> await asynctor.bulk_gather([foo(), foo()], limit=200)
(1, 1)
>>> await asynctor.gather(foo(), foo())
(1, 1)
>>> asynctor.run(gather(foo(), foo()))
(1, 1)
  • timeit
>>> import time
>>> import anyio
>>> from asynctor import timeit
>>> @timeit
... async def sleep_test():
...     await anyio.sleep(3)
...
>>> await sleep()
sleep_test Cost: 3.0 seconds

>>> @timeit
... def sleep_test2():
...     time.sleep(3.1)
...
>>> sleep_test2()
sleep_test2 Cost: 3.1 seconds
  • AsyncRedis
from contextlib import asynccontextmanager

from asynctor import AsyncRedis
from fastapi import FastAPI, Request

@asynccontextmanager
async def lifespan(app):
    async with AsyncRedis(app):
        yield

app = FastAPI(lifespan=lifespan)

@app.get('/')
async def root(request: Request) -> list[str]:
    return await AsyncRedis(request).keys()

@app.get('/redis')
async def get_value_from_redis_by_key(request: Request, key: str) -> str:
    value = await AsyncRedis(request).get(key)
    if not value:
        return ''
    return value.decode()
  • Read Excel File(need to install with xls extra: pip install "asynctor[xls]")
>>> from asynctor.xls import load_xls
>>> await load_xls('tests/demo.xlsx')
[{'Column1': 'row1-\\t%c', 'Column2\nMultiLines': 0, 'Column 3': 1, 4: ''}, {'Column1': 'r2c1\n00', 'Column2\nMultiLines': 'r2 c2', 'Column 3': 2, 4: ''}]

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

asynctor-0.6.3.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

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

asynctor-0.6.3-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file asynctor-0.6.3.tar.gz.

File metadata

  • Download URL: asynctor-0.6.3.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.11.9 Darwin/20.6.0

File hashes

Hashes for asynctor-0.6.3.tar.gz
Algorithm Hash digest
SHA256 7d5f67e7143a5f60e1ec88774b684404dc90afd5b5dd1b460e9d7a2b6ed32a13
MD5 96fb6b045d450a9a14ca13fd7196fe29
BLAKE2b-256 d7621db759365c9dbc491a4602e0d57e1bac1cd61ca33c59f864aa37c507d535

See more details on using hashes here.

File details

Details for the file asynctor-0.6.3-py3-none-any.whl.

File metadata

  • Download URL: asynctor-0.6.3-py3-none-any.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.11.9 Darwin/20.6.0

File hashes

Hashes for asynctor-0.6.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4017929a03926cf6cff71bb06c78f8a3a1b43b1b1ae3d55101e7fbd7a2c70c7b
MD5 02724a11aef07178b3d3886cf4881488
BLAKE2b-256 6113d9efe4626cb42ca3bedbb6c3e6ab831f05c8856fcbe3512f51aa449cea65

See more details on using hashes here.

Supported by

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