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

最佳答案

pydletakes care of the event loop for you。同样,将整个类标记为协程也不起作用;类不是工作单元,类上的方法是。

为了确保跨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()方法开始循环(但是如果需要在其他地方使用相同的循环,则可以传递一个)。

关于python - AttributeError:'generator'对象没有属性'connect'Pydle,Asyncio,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44007989/

10-12 18:43