Чтобы постоянно выполнять две асинхронные функции, вы можете использовать несколько методов. Вот несколько подходов:
-
Использование asyncio и основного цикла событий:
import asyncio async def async_function1(): while True: # Your code for async function 1 here await asyncio.sleep(1) async def async_function2(): while True: # Your code for async function 2 here await asyncio.sleep(1) async def main(): task1 = asyncio.create_task(async_function1()) task2 = asyncio.create_task(async_function2()) await asyncio.gather(task1, task2) asyncio.run(main()) -
Использование потоков и asyncio:
import asyncio import threading async def async_function1(): while True: # Your code for async function 1 here await asyncio.sleep(1) async def async_function2(): while True: # Your code for async function 2 here await asyncio.sleep(1) def run_async_functions(): loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) tasks = [asyncio.ensure_future(async_function1()), asyncio.ensure_future(async_function2())] loop.run_until_complete(asyncio.wait(tasks)) thread = threading.Thread(target=run_async_functions) thread.start() -
Использование внешних библиотек, таких как
aiohttpиaiomultiprocess:import asyncio from aiohttp import web from aiomultiprocess import Process async def async_function1(request): while True: # Your code for async function 1 here await asyncio.sleep(1) async def async_function2(request): while True: # Your code for async function 2 here await asyncio.sleep(1) async def start_server(): app = web.Application() app.router.add_get('/function1', async_function1) app.router.add_get('/function2', async_function2) runner = web.AppRunner(app) await runner.setup() site = web.TCPSite(runner, 'localhost', 8080) await site.start() def run_async_functions(): loop = asyncio.get_event_loop() loop.run_until_complete(asyncio.gather(start_server())) with Process(target=run_async_functions) as process: process.start() process.join()
Это всего лишь несколько примеров того, как можно постоянно выполнять две асинхронные функции. Вы можете выбрать метод, который лучше всего подходит для вашего конкретного случая использования. Не забудьте заменить код-заполнитель фактической реализацией асинхронных функций.