尝试将pydle与asyncio一起使用。几个月前,我的代码工作得很好,现在我再也无法运行了。
@asyncio.coroutine
class MyOwnBot(pydle.Client):
async def on_connect(self):
await self.join('#new')
iclient = MyOwnBot('testeee', realname='tester')
loop = asyncio.get_event_loop()
asyncio.ensure_future(iclient.connect('irc.test.net', 6697, tls=True,tls_verify=False), loop=loop)
但是我收到了这个错误:
asyncio.ensure_future(iclient.connect('irc.test.net', 6697, tls=True, tls_verify=False), loop=loop)
AttributeError: 'generator' object has no attribute 'connect'
答案 0 :(得分:1)
pydle
库takes care of the event loop for you。另外,将整个班级标记为协程并不起作用;一个类不是一个工作单元, on 类的方法是。
为了确保跨python版本的兼容性,该库包含它own async
handling module:
import pydle
class MyOwnBot(pydle.Client):
@pydle.coroutine
def on_connect(self):
yield self.join('#new')
iclient = MyOwnBot('testeee', realname='tester')
iclient.connect('irc.test.net', 6697, tls=True, tls_verify=False)
Client.connect()
方法启动循环(但是如果你需要在其他地方使用相同的循环,你可以传入一个)。