将异步函数(更改频道名称)传递给线程

Pass async function (changes channel name) into thread

我正在尝试将异步函数传递给@tasks.loop 线程,因为如果不使用线程,我的命令只有在任务完成后才能工作。但是,我尝试每 5 分钟执行一次的任务是更改频道名称,但它不起作用。我收到 Timeout context manager should be used 错误。


async def change_name()
  channel = client.get_channel(chid)
  await chid.edit(name='yes')

@tasks.loop(minutes=5)
async def loop():
  _thread = threading.Thread(target=asyncio.run,args=())
  _thread.start()

loop.start()

您可以尝试 python-worker (link)

from worker import async_worker

@async_worker
async def change_name()
  channel = client.get_channel(chid)
  await chid.edit(name='yes')

@tasks.loop(minutes=5)
async def loop():
    await change_name()

loop.start()

您的 change_name 将 运行 自动作为线程