Python 属性错误:';发电机&x27;对象没有属性';连接';Pydle,Asyncio
正在尝试将pydle与asyncio一起使用。几个月前,我的代码运行得很好,现在我无法再运行了Python 属性错误:';发电机&x27;对象没有属性';连接';Pydle,Asyncio,python,python-3.x,async-await,python-asyncio,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() asynci
@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'
pydle
库。此外,将整个班级标记为协同课程也不起作用;类不是工作单元,类上的方法是
为确保跨python版本的兼容性,该库包括:
Client.connect()
方法启动循环(但是如果需要在其他地方使用相同的循环,可以传入一个循环)。为什么要使整个类成为一个协程?从类中删除@asyncio.coroutine
装饰程序。然后我会得到一个额外的错误。第520行,在Sure_future raise TypeError(“需要一个未来、一个协同程序或一个可等待的”)中,TypeError:需要一个未来、一个协同程序或一个可等待的程序。所以我想我应该继续合作。不,你不应该。我们可以在不使用它的情况下解决您遇到的下一个问题。您确定pydle.Client.connect()
方法是可以等待的吗?也许他们会处理自己的循环?我想这是因为几周前整个代码都正常工作了。但我必须转换系统。到目前为止,这对我来说是可行的,但我想在discord和IRC之间架起一座桥梁。遗憾的是,这不起作用,但无法找出原因。可能是因为自己的处理模块?@Kenny:iclient.connect()
接受一个循环参数,可能是共享您创建的循环?您能给我一个示例吗?我不太清楚你是什么意思。@Kenny:the接受一个eventloop
参数。将eventloop=loop
添加到iclient.connect()
调用以共享loop.self.eventloop.register(self.socket.fileno())AttributeError:“\u UnixSelectorEventLoop”对象没有属性“register”
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)