Ich versuche, eine Verbindung zu wss: //api.poloniex.com und Abonnieren von Ticker. Ich kann kein funktionierendes Beispiel in Python finden. Ich habe versucht, Autobahn/twisted und websocket-client 0.32.0 zu verwenden.Verbindung mit polonyex.com Websocket API mit einer Python-Bibliothek
Der Zweck davon ist, Echtzeit Ticker-Daten zu erhalten und es in einer MySQL-Datenbank zu speichern.
Bisher habe ich versucht, Beispiele aus der Bibliotheksdokumentation zu verwenden. Sie arbeiten für localhost oder den Testserver, aber wenn ich zu wss: //api.poloniex.com wechsel, bekomme ich eine Reihe von Fehlern.
hier ist mein Versuch mit WebSocket-Client 0.32.0:
from websocket import create_connection
ws = create_connection("wss://api.poloniex.com")
ws.send("ticker")
result = ws.recv()
print "Received '%s'" % result
ws.close()
und dies wird mit Autobahn/twisted:
from autobahn.twisted.websocket import WebSocketClientProtocol
from autobahn.twisted.websocket import WebSocketClientFactory
class MyClientProtocol(WebSocketClientProtocol):
def onConnect(self, response):
print("Server connected: {0}".format(response.peer))
def onOpen(self):
print("WebSocket connection open.")
def hello():
self.sendMessage(u"ticker".encode('utf8'))
self.sendMessage(b"\x00\x01\x03\x04", isBinary=True)
self.factory.reactor.callLater(1, hello)
# start sending messages every second ..
hello()
def onMessage(self, payload, isBinary):
if isBinary:
print("Binary message received: {0} bytes".format(len(payload)))
else:
print("Text message received: {0}".format(payload.decode('utf8')))
def onClose(self, wasClean, code, reason):
print("WebSocket connection closed: {0}".format(reason))
if __name__ == '__main__':
import sys
from twisted.python import log
from twisted.internet import reactor
log.startLogging(sys.stdout)
factory = WebSocketClientFactory("wss://api.poloniex.com", debug=False)
factory.protocol = MyClientProtocol
reactor.connectTCP("wss://api.poloniex.com", 9000, factory)
reactor.run()
Ein komplettes aber einfaches Beispiel zeigt, wie eine Verbindung herstellen und abonnieren zu einem Websocket-Push-API unter Verwendung einer Python-Bibliothek würde sehr geschätzt werden.
Ertrag von selfScribe (onTicker, 'Ticker') SyntaxError: ungültige Syntax –
In welcher Python-Version sind Sie? Dieses Beispiel ist für Python 3.3+, da es 'asyncio' und das' yield from' Konstrukt verwendet, um die Ausführung an eine andere Coroutine zu delegieren. Sie können weitere Details hier finden: https://docs.python.org/3/library/asyncio-task.html –
Python 2.7.3, Sie haben Recht. Danke –