Запуск несколько ассинхронных функций вместе на python

День добрый! Задача состоит в том, чтобы запустить несколько асинхронных функции разом.

Сейчас у меня только две функции: первая открывает сокет и непрерывно получает данные из этого соединения; вторая периодически делает запросы к другому серверу и отправляет в тг канал ответ на сделанный запрос и данные, которые мы получали в первой функции.

Проблема в том, что, возможно, нужно будет открывать еще сокеты и писать функции подобные второй. Можно ли выполнять асинхронные функции пареллельно? Пробовал совместить asyncio c multiprocessing и threading. Путного ничего не вышло у меня.

Вот что сейчас написал

import asyncio, json, time, aiohttp, websockets

async def func2(data):
    async with aiohttp.ClientSession() as session:
        async with session.post(url='...', json=data) as response:
            response = await response.json()
            # Обрабатываю response

async def func1():
    url = f'...'
    start_time = time.time()
    async with websockets.connect(url) as client:
        while True:
            data = json.loads(await client.recv())
            # Обрабатываю data
            if time.time() - start_time > 5*60:
                await gen_tasks()
                start_time = time.time()


async def gen_tasks():
    tasks = []
    for i in ...:
        data = {...}
        tasks.append(asyncio.create_task(func2(data)))
    for task in tasks:
        await task

asyncio.run(func1())

Ответы (1 шт):

Автор решения: Jumper

Содержимое gen_tasks обернул в цикл while и в конец цикла довавил await asyncio.sleep(300)

В конец добавил функцию, создающую задачи

async def main():
    t1 = asyncio.create_task(func1())
    t2 = asyncio.create_task(gen_tasks())
    await t1
    await t2

asyncio.run(main())
→ Ссылка