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_async
>>> from asynctor import gather, run_async
>>> async def foo():
...     return 1
...
>>> await bulk_gather([foo(), foo()], limit=200)
(1, 1)
>>> await gather(foo(), foo())
(1, 1)
>>> run_async(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.5.5.tar.gz (8.0 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.5.5-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: asynctor-0.5.5.tar.gz
  • Upload date:
  • Size: 8.0 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.5.5.tar.gz
Algorithm Hash digest
SHA256 3e7414c46f12403249aa488aa1eef59de63684a2b1377a86d0b1c7988df581b5
MD5 6282507eaf75806a842a1fa6ab1a139b
BLAKE2b-256 b49905fa7f9ffa784e8aafe4f9adc9133ac947e1c974e232350708d2fe6e0124

See more details on using hashes here.

File details

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

File metadata

  • Download URL: asynctor-0.5.5-py3-none-any.whl
  • Upload date:
  • Size: 8.8 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.5.5-py3-none-any.whl
Algorithm Hash digest
SHA256 266dd941e9f8f82157ca443e7862328344a752e0f587cfbfeba92731583ff342
MD5 b07c352fd32a76e82f5b39a895d20edb
BLAKE2b-256 fa42bf8aad748a7e9497e1fb69aeb7eeb9c3cfb4c62752a13850467987970801

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