下午好!挑战在于一次运行多个异步函数。
现在我只有两个功能:第一个打开一个套接字并不断从这个连接接收数据;第二个周期性地向另一个服务器发出请求,并将对请求的响应和我们在第一个函数中收到的数据发送到 tg 通道。
问题是您可能需要打开更多套接字并编写像第二个这样的函数。是否可以并行执行异步函数?试图将 asyncio 与多处理和线程结合起来。对我来说没有任何结果。
这是我现在写的
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())