Почему конкретно не получается? Есть ошибки?
Вынесете запуск цикла из функции. Вот рабочий пример.
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 для асинхронного сохранения документов на диск.