gpt4 book ai didi

python - 如何在后台运行无限循环?

转载 作者:行者123 更新时间:2023-12-05 09:13:00 25 4
gpt4 key购买 nike

我有一个持续监控 API 的函数。基本上,该函数获取数据、解析数据然后将其附加到文件中。然后它会等待 15 分钟,然后一遍又一遍地做同样的事情。

我想要的是在后台运行这个循环,这样我就不会阻止其余代码的执行。

最佳答案

如果您正在使用 asyncio(我假设您是由于 asyncio 标记),可以使用任务执行计划操作。

import asyncio

loop = asyncio.get_event_loop()

async def check_api():
while True:
# Do API check, helps if this is using async methods
await asyncio.sleep(15 * 60) # 15 minutes (in seconds)

loop.create_task(check_api())

... # Rest of your application

loop.run_forever()

如果您的 API 检查不是异步的(或者您用来与之交互的库不是异步的),您可以使用执行器在单独的线程或进程中运行操作,同时仍保持异步 API。

例如:

from concurrent.futures import ThreadPoolExecutor

executor = ThreadPoolExecutor()

def call_api():
...

async def check_api():
while True:
await loop.run_in_executor(executor, call_api)
await asyncio.sleep(15 * 60) # 15 minutes (in seconds)

请注意,asyncio 不会自动使您的代码并行,它是协作式多任务处理,您的所有方法都需要使用 await 进行协作,长时间运行的操作仍会阻塞其他线程,在这种情况下,Executor 将帮助。

关于python - 如何在后台运行无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56962549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com