I'm using asynchat and trying to use python3. getting this error:
error: uncaptured python exception, closing channel <irc.IRC connected
at 0x9a5286c> (<class 'AttributeError'>:'str' object has no attribute
'more' [/usr/lib/python3.2/asyncore.py|write|89] [/usr/lib/python3.2
/asyncore.py|handle_write_event|462] [/usr/lib/python3.2asynchat.py|
handle_write|194] [/usr/lib/python3.2/asynchat.py|initiate_send|245])
My code worked fine with Python 2.6.7.
Suggestions please?
UPDATE: I checked that I'm indeed using python3's asynchat.
~$ python3
Python 3.2 (r32:88445, Mar 25 2011, 19:28:28)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import asynchat
>>> asynchat
<module 'asynchat' from '/usr/lib/python3.2/asynchat.py'>
>>>
Per http://bugs.python.org/issue12523
Actually, the error is that in Python 3 you should use bytes objects when transmitting/receiving data over the network, not (unicode) strings. That is, replace '\r\n' with b'\r\n', etc.
Of course, the error message should be made less obscure.
The error seems to be raised in /usr/lib/python3.2/asynchat.py|initiate_send|245
.
def initiate_send(self):
while self.producer_fifo and self.connected:
first = self.producer_fifo[0]
...
try:
data = buffer(first, 0, obs)
except TypeError:
data = first.more() <--- here
Seems like somebody put a string in self.producer_fifo
instead of an asyncchat.simple_producer
, which is the only class in async*.py
with a more()
method.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.