Sto provando a connettermi a wss: //api.poloniex.com e iscrivermi a ticker. Non riesco a trovare alcun esempio funzionante in python. Ho provato ad usare autobahn/twisted e websocket-client 0.32.0.Come connettersi a poloniex.com websocket api utilizzando una libreria python
Lo scopo è quello di ottenere dati di ticker in tempo reale e memorizzarli in un database mysql.
Finora ho provato a utilizzare gli esempi forniti nella documentazione della libreria. Funzionano per localhost o il server di test, ma se cambio in wss: //api.poloniex.com ottengo un sacco di errori.
Ecco il mio tentativo utilizzando 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()
e questo sta usando 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()
Un esempio completo, ma semplice che mostra come collegarsi e iscriversi al ad una API push di websocket che usa qualsiasi libreria python sarebbe molto apprezzata.
resa da self.subscribe (onTicker, 'ticker') SyntaxError: sintassi non valida –
In che versione di Python sei? Questo esempio è per Python 3.3+, poiché usa 'asyncio' e il costrutto' yield from' per delegare l'esecuzione a una diversa coroutine. Puoi trovare maggiori dettagli qui: https://docs.python.org/3/library/asyncio-task.html –
Python 2.7.3, hai ragione. Grazie –