• Как реализовать асинхронную функцию с asyncio в моем случае?

    marazm76
    @marazm76
    Почему конкретно не получается? Есть ошибки?
    Вынесете запуск цикла из функции. Вот рабочий пример.
    import asyncio
    
    
    class Document:
        async def save(self, name):
            await asyncio.sleep(1)
            print(f'Document "{name}" has saved')
    
    
    async def first():
        name = "test_document.doc"
        print("Run first function")
        await second(name)
    
    
    async def second(name):
        await Document().save(name)
    
    
    asyncio.run(first())


    Из функции first можно асинхронно сохранять как один документ, так и несколько (через await asyncio.gather).
    async def first():
        print("Run first function")
        await asyncio.gather(
            second('doc_1'),
            second('doc_2'),
            second('doc_3'),
        )


    Из кода не понятна реализация класса Document, но я бы посоветовал сохранение тоже делать не блокирующим. Например можно использовать aiofile для асинхронного сохранения документов на диск.
    Ответ написан
    Комментировать