Помогите мне понять эту трассировку из примера twn.words msn - PullRequest
3 голосов
/ 07 августа 2009

Я запускаю пример протокола twn.words msn из витой документации, расположенной здесь: http://twistedmatrix.com/projects/words/documentation/examples/msn_example.py

Я знаю, что есть еще один вопрос об этом образце .py в stackoverflow, но это совершенно другая проблема. Когда я запускаю пример, он ведет себя как ожидалось. Заходит в учетную запись и отображает информацию о пользователях в списке контактов, но после этого выдает эту трассировку

> Traceback (most recent call last):  
> File
> "c:\python26\lib\site-packages\twisted\python\log.py",
> line 84, in callWithLogger
>     return callWithContext({"system": lp}, func, *args, **kw)   File
> "c:\python26\lib\site-packages\twisted\python\log.py",
> line 69, in callWithContext
>     return context.call({ILogContext: newCtx}, func, *args, **kw)   File
> "c:\python26\lib\site-packages\twisted\python\context.py",
> line 59, in callWithContext
>     return self.currentContext().callWithContext(ctx,
> func, *args, **kw)   File
> "c:\python26\lib\site-packages\twisted\python\context.py",
> line 37, in callWithContext
>     return func(*args,**kw)
> --- <exception caught here> ---   File "c:\python26\lib\site-packages\twisted\internet\selectreactor.py",
> line 146, in _doReadOrWrite
>     why = getattr(selectable, method)()   File
> "c:\python26\lib\site-packages\twisted\internet\tcp.py",
> line 463, in doRead
>     return self.protocol.dataReceived(data)  
> File
> "c:\python26\lib\site-packages\twisted\protocols\basic.py", line 239, indataReceived
>     return self.rawDataReceived(data)   File
> "c:\python26\lib\site-packages\twisted\words\protocols\msn.py",
> line 676 in rawDataReceived
>     self.gotMessage(m)   File "c:\python26\lib\site-packages\twisted\words\protocols\msn.py",
> line 699, in gotMessage
>     raise NotImplementedError exceptions.NotImplementedError:

Может ли кто-нибудь помочь мне понять, что это значит?

Ответы [ 2 ]

1 голос
/ 25 августа 2009

Похоже, это изменение в том, как работает сервер MSN, хотя на самом деле это не считается изменением протокола. Происходит то, что сервер MSN отправляет сообщение клиенту сразу после подключения клиента, а в примере с витыми словами этого не ожидается.

Предполагая, что вы запускаете msn_example.py из http://twistedmatrix.com/projects/words/documentation/examples/,, вы можете получить пример работы и посмотреть, что происходит, добавив следующий код в пример (сразу после окончания функции listSynchronized):

def gotMessage(self, message):
    print message.headers
    print message.getMessage()

После внесения изменений, если вы запустите пример, вы должны увидеть следующее:

...
2009-08-25 00:03:23-0700 [Notification,client] {'Content-Type': 'text/x-msmsgsinitialemailnotification; charset=UTF-8', 'MIME-Version': '1.0'}
2009-08-25 00:03:23-0700 [Notification,client] Inbox-Unread: 1
2009-08-25 00:03:23-0700 [Notification,client] Folders-Unread: 0
2009-08-25 00:03:23-0700 [Notification,client] Inbox-URL: /cgi-bin/HoTMaiL
2009-08-25 00:03:23-0700 [Notification,client] Folders-URL: /cgi-bin/folders
2009-08-25 00:03:23-0700 [Notification,client] Post-URL: http://www.hotmail.com
2009-08-25 00:03:23-0700 [Notification,client]

Мы видим, что сервер отправляет клиенту сообщение, в котором указывается количество непрочитанных сообщений электронной почты для этой учетной записи.

Надеюсь, это поможет!

0 голосов
/ 07 августа 2009

Метод gotMessage утверждает, что не реализован. Скорее всего, это означает, что вы подклассировали класс, которому необходимо переопределить gotMessage в подклассе, но вы не сделали переопределение.

...