Grundlegendes zu Python-HTTP-streaming

Ich bin kämpfen, um den Zugriff auf ein streaming-API mit Python und Anfragen.

Was die API sagt: "Wir haben uns ermöglicht, eine streaming-Endpunkt für die Anforderung von sowohl Angebot und Handel mit Daten unter Verwendung einer persistenten HTTP-socket-Verbindung. Streaming-Daten aus der API besteht aus der Herstellung einer Authentifizierten HTTP-request und verlassen das HTTP-socket öffnen, um kontinuierlich Daten empfangen."

Wie ich versucht habe auf die Daten zugreifen:

s = requests.Session()
def streaming(symbols):
    url = 'https://stream.tradeking.com/v1/market/quotes.json'
    payload = {'symbols': ','.join(symbols)}
    return s.get(url, params=payload, stream=True)  
r = streaming(['AAPL', 'GOOG'])

Den Anforderungen docs hier zeigen zwei Dinge von Interesse: Verwenden Sie einen generator/iterator für die Verwendung mit chunked-data, ging in das Feld. Für das streaming von Daten, es schlägt mit einem code wie:

for line in r.iter_lines():
    print(line)

Weder scheint zu funktionieren, obwohl ich habe keine Ahnung, was in dem generator-Funktion, die seit der Beispiel, ist unklar. Mit Hilfe von r ist.iter_lines(), bekomme ich die Ausgabe: "b" {"status":"connected"}{"status":disconnected"}'"

Kann ich den Zugriff auf die Header, und die Antwort HTTP 200, aber keine gültigen Daten, oder finden Sie klare Beispiele auf, wie Sie Zugang zu streaming-HTTP-Daten in python. Jede Hilfe würde geschätzt werden. Die API empfiehlt die Verwendung von Jetty für Java zu halten, den stream zu öffnen, aber ich bin mir nicht sicher, wie man dies in Python.

Headers: {'Verbindung': 'keep-alive', 'content-type': 'application/json', 'x-powered-by': 'Express', 'transfer-encoding': 'chunked'}

Setzen Sie Ihre url in meinen browser ein "Invalid authorization-header" angezeigt. Brauchen Sie, um zu authentifizieren? Und/oder Lesen Sie das Ergebnis im JSON-richtig?
wenn OP sieht 200 OK dann offensichtlich hat er auth getan.
Die API erfordert in der Tat auth. Ich verließ die auth-Zeilen für die Einfachheit. Ich würde post, die Schlüssel, aber Sie sind verbunden mit meinem trading-Konto. Für die nicht-streaming-Anfragen, ich benutze Anfrage .json(). Vielleicht muss ich machen, dass auch hier nicht sicher.
Verpasste die 200 Antwort zunächst, mein schlechtes. Wollte nur auch noch sagen, dass eine schöne Gewohnheit für api-keys ist, Sie zu Lesen aus einer Datei, die über eine eigene Funktion. Auf diese Weise können Sie kopieren/einfügen von code-snippets, ohne sich Gedanken, und es ist leicht zu zählen, dass die Datei in .gitignore an, wenn Sie mit git.

InformationsquelleAutor Turtles Are Cute | 2013-07-23

Schreibe einen Kommentar