python 异步库问题

问题描述 投票:0回答:0

我有以下脚本,但它无法正常工作。我想第一个函数总是重复,第二个函数应该在第一个函数返回 result1、result2 时启动。我想再添加一个函数,它应该在第二个函数完成第一个函数的 result1 作业后 40 秒开始。第三个函数应该对 result2 做些什么。我想使用 asyncio 库异步处理它,因为我需要第一个函数在第三个函数休眠时不阻塞 40 秒。我尝试使用 chatgpt,但这个工具向我推荐了错误的东西。怎么做?

import asyncio
import logging



async def first_function(queue1, queue2):
    while True:
        # do something
        result1 = "some result"
        result2 = {"key": "value"}
        await queue1.put(result1)
        await queue2.put(result2)
        await asyncio.sleep(1)  # wait for 1 second

async def second_function(queue1, queue2, queue3):
    while True:

           result1 = await queue1.get()
           result2 = await queue2.get()
           # do something with the results
           logging.info(f"Second function received: {result1}, {result2}")
           await queue3.put(result1)
           await asyncio.sleep(1)  # wait for 1 second


async def third_function(queue):
    while True:

           result = await queue.get()
           await asyncio.sleep(40) # wait for 40 seconds
           # do something with the result
           logging.info(f"Third function received: {result}")


async def main():
    queue1 = asyncio.Queue()
    queue2 = asyncio.Queue()
    queue3 = asyncio.Queue()
    task1 = asyncio.create_task(first_function(queue1, queue2))
    task2 = asyncio.create_task(second_function(queue1, queue2, queue3))
    task3 = asyncio.create_task(third_function(queue3))
    await asyncio.gather(task1, task2, task3)

我尝试了所有我用谷歌搜索的东西,当达到第三个功能时它总是阻止我的代码 40 秒

python asynchronous async-await python-asyncio
© www.soinside.com 2019 - 2024. All rights reserved.