AttributeError:'generator'对象没有属性'connect'Pydle,Asyncio

时间:2017-05-16 17:30:10

标签: python python-3.x async-await python-asyncio

尝试将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'

1 个答案:

答案 0 :(得分:1)

pydletakes 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()方法启动循环(但是如果你需要在其他地方使用相同的循环,你可以传入一个)。