2013-08-23 18 views
5

ich die folgende Fehlermeldung erhalten:Python xmpp einfache Client Fehler

AttributeError: Client instance has no attribute 'Dispatcher' 

während des folgenden Code in Python läuft 2.7:

import xmpp 

user= '[email protected]' 
password="pass" 

jid = xmpp.JID(user) 
connection = xmpp.Client(jid.getDomain()) 
connection.connect() 
connection.auth(jid.getNode(),password) 

Würde glücklich sein, wenn jemand weiß, wie man es zu beheben.

P.S. Vollständige Rückverfolgung der Fehler nach dem Update von N3RO vorgeschlagen:

C:\Users\krasnovi\Desktop\temp\xmpp tests>python xmpp.client.py 
Invalid debugflag given: always 
Invalid debugflag given: nodebuilder 
DEBUG: 
DEBUG: Debug created for build\bdist.win-amd64\egg\xmpp\client.py 
DEBUG: flags defined: always,nodebuilder 
DEBUG: socket  start Plugging <xmpp.transports.TCPsocket instance at 0x0000 
0000027C1708> into <xmpp.client.Client instance at 0x00000000027C1588> 
DEBUG: socket  warn An error occurred while looking up _xmpp-client._tcp.t 
alk.gmail.com 
DEBUG: socket  error Failed to connect to remote host ('talk.gmail.com', 52 
23): getaddrinfo failed (11004) 
Traceback (most recent call last): 
    File "build\bdist.win-amd64\egg\xmpp\transports.py", line 133, in connect 
    self._sock.connect((server[0], int(server[1]))) 
    File "C:\Python27\lib\socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
gaierror: [Errno 11004] getaddrinfo failed 
DEBUG: socket  stop Plugging <xmpp.transports.TCPsocket instance at 0x0000 
0000027C1708> out of <xmpp.client.Client instance at 0x00000000027C1588>. 
Traceback (most recent call last): 
    File "xmpp.client.py", line 11, in <module> 
    connection.auth(jid.getNode(),password) 
    File "build\bdist.win-amd64\egg\xmpp\client.py", line 214, in auth 
AttributeError: Client instance has no attribute 'Dispatcher' 

Vor dem Update:

Invalid debugflag given: always 
Invalid debugflag given: nodebuilder 
DEBUG: 
DEBUG: Debug created for build\bdist.win-amd64\egg\xmpp\client.py 
DEBUG: flags defined: always,nodebuilder 
DEBUG: socket  start Plugging <xmpp.transports.TCPsocket instance at 0x0000 
0000027ED708> into <xmpp.client.Client instance at 0x00000000027ED588> 
DEBUG: socket  error Failed to connect to remote host ('xmpp.l.google.com.' 
, 5222): A connection attempt failed because the connected party did not properl 
y respond after a period of time, or established connection failed because conne 
cted host has failed to respond (10060) 
Traceback (most recent call last): 
    File "build\bdist.win-amd64\egg\xmpp\transports.py", line 133, in connect 
    self._sock.connect((server[0], int(server[1]))) 
    File "C:\Python27\lib\socket.py", line 224, in meth 
    return getattr(self._sock,name)(*args) 
error: [Errno 10060] A connection attempt failed because the connected party did 
not properly respond after a period of time, or established connection failed b 
ecause connected host has failed to respond 
DEBUG: socket  stop Plugging <xmpp.transports.TCPsocket instance at 0x0000 
0000027ED708> out of <xmpp.client.Client instance at 0x00000000027ED588>. 
Traceback (most recent call last): 
    File "xmpp.client.py", line 11, in <module> 
    connection.auth(jid.getNode(),password) 
    File "build\bdist.win-amd64\egg\xmpp\client.py", line 214, in auth 
AttributeError: Client instance has no attribute 'Dispatcher' 
+0

Bitte fügen Sie die * vollständige * traceback für den Fehler ein. –

+0

@Martijn Pieters. Ich tat. – user1264304

+1

Der AttributeError scheint ein Problem zu sein, das auftritt, * nachdem die Verbindung aufgrund eines Timeouts fehlgeschlagen ist. Bist du überhaupt hinter einer Firewall? –

Antwort

3

Sie benötigen einen Server angeben, zu dem Sie eine Verbindung herstellen möchten.

connection.connect(server=('serveradress.com', portnumber)) 

Nach dem Ändern konnte ich den AttributeError nicht reproduzieren.

Ich würde Ihnen auch raten, eine korrekte JID zu verwenden, um Ihren Code zu testen. JIDs sind wie E-Mails, getrennt durch ein @, weshalb in Ihrem Beispielcode jid.getNode() nichts zurückgibt.

* mein Code-Beispiel bearbeiten:

import xmpp 

user = '[email protected]' 
password = 'password' 

jid = xmpp.JID(user) 

connection = xmpp.Client(jid.getDomain()) 
connection.connect(server=('talk.google.com', 5223)) 
connection.auth(jid.getNode(), password) 
connection.sendInitPresence() 
+0

Danke. Ich bekomme immer noch den Fehler, Sie können die vollständige Rückverfolgung in meiner bearbeiteten Frage sehen. Entschuldigung, ich habe es in der Frage behoben. Eigentlich habe ich eine echte JID in meinem Code. – user1264304

+0

Ich habe meinen Arbeitscode in meine Antwort eingefügt. Ich hoffe, das kann dir helfen. – N3RO

+0

@ N3RO. Danke, es funktionierte bei mir zu Hause, aber nicht am Computer, der mit dem Domain-Netzwerk verbunden war. – user1264304

3

In Ihrem Zurückverfolgungs es sieht aus wie Sie talk.gmail.com zu versuchen, eine Verbindung, die eine nicht existente Domain ist, so dass die connection.connect Anweisung fehlschlagen, eine Verbindung zu öffnen.

Versuchen Sie, eine Verbindung zu talk.google.com herzustellen, die der Name des richtigen Servers sein kann.

Verwandte Themen