2016-07-21 27 views
0

nicht behandelt Ich versuche, den PyArango-Treiber für ArangoDB zu verwenden. Ich verwende Python 3.5.2 für Windows (das ist, was von meiner Organisation zur Verfügung gestellt wird) und ArangoDB 3.0, das lokal auf meinem Computer läuft.PyArango.Connection fehlschlägt mit json.decoder.JSONDecodeError wurde von Benutzercode

ich die folgend in dem Python-interaktiv Shell (oder in einem Skript):

from pyArango.connection import * 
myConnection = Connection() 

Wenn der Anschluss() Zeile ausgewertet wird die folgende Ausgabe an die Konsole ist:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pyArango\connection.py", line 88, in __init__ 
    self.reload() 
    File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python35-32\lib\site-packages\pyArango\connection.py", line 107, in reload 
    data = r.json() 
    File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python35-32\lib\site-packages\requests\models.py", line 812, in json 
    return complexjson.loads(self.text, **kwargs) 
    File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python35-32\lib\json\__init__.py", line 319, in loads 
    return _default_decoder.decode(s) 
    File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python35-32\lib\json\decoder.py", line 339, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python35-32\lib\json\decoder.py", line 357, in raw_decode 
    raise JSONDecodeError("Expecting value", s, err.value) from None 
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 

Das Online-Tutorial/Dokumentation unter https://www.arangodb.com/tutorials/tutorial-python/ und https://github.com/tariqdaouda/pyArango zeigt Unterstützung für ArangoDB 3.x und Python 3.4. Hat jemand anderes dieses Problem bei dem Versuch, Python 3.5 mit dem pyArango-Treiber zu verwenden, gefunden? Wenn ja, gibt es eine Lösung für dieses Problem?

Dank

+0

pyArango wird automatisch sowohl mit 2,7 als auch mit 3,5 getestet. Ich habe gerade ein Update zum Drucken der Anfrage Inhalt immer wenn ein Aufruf von json() fehlgeschlagen. Könntest du einen git ziehen und es wiederholen? Das sollte uns mehr Informationen darüber geben, was vor sich geht. – tariqdaouda

+0

Danke. Ich habe das letzte Update gezogen. Das Problem liegt daran, dass der Proxy-Server den Versuch des Python-HTTP-Clients, eine Verbindung zum ArangoDB-Server herzustellen, zurückweist. Der Proxy-Server gibt eine HTML-Fehlerseite zurück, die vom JSON-Parser nicht analysiert werden kann. – muddlednbefuddled

Antwort

1

Das Problem wurde durch die Firewall/Proxy blockiert HTTP-Anfragen von der Python-HTTP-Client verursacht. Die Firewall/der Proxy gab eine HTML-Fehlerseite zurück, die den JSON-Dekodierungsfehler verursachte, als er von dem von pyArango verwendeten JSON-Parser verarbeitet wurde. Die Betreuer von pyArango fügten eine Protokollausgabe bei Json-Decodierungsfehlern hinzu, die diese Fehlerbedingung offensichtlich machten. Der Versuch, mit einem Browser wie Firefox auf den arango Server zuzugreifen, wurde von der Firewall/dem Proxy nicht blockiert.

0

haben wir das Tutorial aktualisiert - es die Authentifikationsschritte fehlte.

Allerdings konnte ich Ihre Fehlermeldung über den fehlgeschlagenen JSON-Parser nicht erhalten; Ich bekomme:

>>> myConnection = Connection() 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python3.5/dist-packages/pyArango-1.1.0-py3.5.egg/pyArango/connection.py", line 88, in __init__ 
    File "/usr/local/lib/python3.5/dist-packages/pyArango-1.1.0-py3.5.egg/pyArango/connection.py", line 105, in reload 
    File "/usr/local/lib/python3.5/dist-packages/pyArango-1.1.0-py3.5.egg/pyArango/connection.py", line 30, in __call__ 
pyArango.theExceptions.ConnectionError: Unauthorized access, you must supply a (username, password) with the correct credentials. URL: http://localhost:8529/_api/database/user, status: 401. Errors: b'' 

was ist die erwartete Fehlermeldung.

+0

Ich verwende Windows mit Python 3.5 und pyArango == 1.2.3. Ich habe versucht, auf Version 1.1 auf die Version von pyArango herunterzustufen, die Sie verwenden, aber unter Windows kann das Modul nicht mit dem folgenden Fehler geladen werden: >>> from pyArango.connection import * Traceback (letzter Aufruf zuletzt): Datei " “Linie 1 in Datei "C: \ Benutzer \ xxxxx \ Downloads \ dist \ pyArango-1.1.0 \ pyArango \ connection.py", l ine 4, in von Datenbank-Import-Datenbank, dBHANDLE ImportError: Kein Modul namens 'Datenbank' – muddlednbefuddled