aiomisc - это библиотека с различными утилитами для asyncio

Coveralls Actions Актуальная версия https://img.shields.io/pypi/wheel/aiomisc.svg https://img.shields.io/pypi/pyversions/aiomisc.svg https://img.shields.io/pypi/l/aiomisc.svg

Различные утилиты для asyncio

Установка

Установка с PyPI

pip3 install aiomisc

Вместе с uvloop

pip3 install "aiomisc[uvloop]"

Вместе с aiohttp:

pip3 install "aiomisc[aiohttp]"

Установка с github.com:

pip3 install git+https://github.com/aiokitchen/aiomisc.git
pip3 install \
    https://github.com/aiokitchen/aiomisc/archive/refs/heads/master.zip

Быстрый старт

Асинхронная точка входа (entrypoint) с логированием и полезными аргументами

import argparse
import asyncio
import logging

from aiomisc import entrypoint
from aiomisc.log import LogLevel, LogFormat


parser = argparse.ArgumentParser()

parser.add_argument(
    "-L", "--log-level", help="Log level",
    default=LogLevel.default(),
    choices=LogLevel.choices(),
)

parser.add_argument(
    "--log-format", help="Log format",
    default=LogFormat.default(),
    choices=LogFormat.choices(),
)

parser.add_argument(
    "-D", "--debug", action='store_true',
    help="Run loop and application in debug mode"
)


parser.add_argument(
    "--pool-size", help="Thread pool size",
    default=4, type=int,
)


log = logging.getLogger(__name__)


async def main():
    log.info('Starting')
    await asyncio.sleep(3)
    log.info('Exiting')


if __name__ == '__main__':
    arg = parser.parse_args()

    with entrypoint(
        log_level=arg.log_level,
        log_format=arg.log_format
    ) as loop:
        loop.run_until_complete(main())

Установка event loop на старте программы:

import asyncio
import aiomisc


# Installing uvloop event loop
# and set `aiomisc.thread_pool.ThreadPoolExecutor`
# as default executor
aiomisc.new_event_loop()


async def main():
    await asyncio.sleep(1)


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main())

Закрываем текущий event loop и устанавлиаем новый:

import asyncio
import aiomisc


async def main():
    await asyncio.sleep(3)


if __name__ == '__main__':
    loop = aiomisc.new_event_loop()
    loop.run_until_complete(main())

Содержание

Версионирование

Это программное обеспечение следует методологиии Семантического Версионирования

Как начать разработку?

Должно быть установлено

  • virtualenv

  • GNU Make как make

  • Python 3.5+ как python3

Для настройки окружения разработчика просто наберите

make develop