gpt4 book ai didi

python-3.x - 运行时错误 : Event loop is running

转载 作者:行者123 更新时间:2023-12-04 04:24:42 24 4
gpt4 key购买 nike

调用函数 send_message 时出现以下错误.

Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python3.4/threading.py", line 920, in _bootstrap_inner
self.run()
File "/usr/lib/python3.4/threading.py", line 868, in run
self._target(*self._args, **self._kwargs)
File "/home/joffe/Documents/discord/irc/ircbot.py", line 44, in get_message
mydiscord.send_message(line[1])
File "/home/joffe/Documents/discord/irc/mydiscord.py", line 37, in send_message
client.loop.run_until_complete(client.send_message(SERVER,message))
File "/usr/lib/python3.4/asyncio/base_events.py", line 331, in run_until_complete
self.run_forever()
File "/usr/lib/python3.4/asyncio/base_events.py", line 296, in run_forever
raise RuntimeError('Event loop is running.')
RuntimeError: Event loop is running.

我的功能 send_message接收一条消息并将其发送到不和谐 channel 。
该函数是从在线程中运行的函数调用的。客户端对象是在主线程中创建的。
def send_message(message):
print(str.encode("Message to discord: " + message))

client.loop.run_until_complete(client.send_message(SERVER,message))

最佳答案

“事件循环正在运行”异常表明您调用了 loop.run_until_complete在已经运行的循环上,也许在另一个线程中。

  • 如果循环已经在运行 在另一个线程中 并且你想提交一个协程来执行,使用:
    asyncio.run_coroutine_threadsafe(client.send_message(SERVER, message), client.loop)
  • 如果您尝试向循环添加协程并且该循环正在运行 在当前线程 ,那么最好的方法可能就是 await/yield from
  • 如果您从 安排它同步功能 , 那么你
    可能想要:
    asyncio.ensure_future(
    client.send_message(SERVER, message),
    loop=client.loop
    ).add_done_callback(fn)

    哪里fn是一个函数,其唯一参数是由 ensure_future 创建的 future 并在 future 完成后调用。
  • 关于python-3.x - 运行时错误 : Event loop is running,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39754020/

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