使用 python 的 websocket 计数器增量
Counter increment with websocket using python
想知道是否有人可以提供帮助。我正在尝试从 websocket 获取数据并将其放入 DataFrame 并计算我收到响应的次数。我觉得在之前计数并在之后发送数据会更容易,但我的代码不起作用。
import websocket
import json
this = json.dumps({'op': 'subscribe', 'channel': 'trades', 'market': 'BTC-PERP'})
def on_open(wsapp):
wsapp.send(this)
def on_message(wsapp, message):
#print(message)
count = 0
for messages in message:
count = count + 1
print(count)
wsapp = websocket.WebSocketApp("wss://ftx.com/ws/", on_message=on_message,
on_open=on_open)
wsapp.run_forever()
我将通过追加 websocket 数据和计数器来创建数据框。这是个好主意吗?
这是我想做的一个例子:
example
on_message
每次消息到达时都会调用,所以message
参数等于单个消息。
通过迭代 for messages in message:
中的该消息,您正在迭代消息字符串的字符,并对每个字符进行计数。
一种解决方案是使用 class 来跟踪消息计数:
import websocket
import json
this = json.dumps({'op': 'subscribe', 'channel': 'trades', 'market': 'BTC-PERP'})
def on_open(wsapp):
wsapp.send(this)
class Counter:
def __init__(self):
self.count = 0
def on_message(self, wsapp, message):
#print(message)
self.count += 1
print(self.count)
counter = Counter()
wsapp = websocket.WebSocketApp("wss://ftx.com/ws/", on_message=counter.on_message,
on_open=on_open)
wsapp.run_forever()
或者您可以使用 WebSocket
而不是 WebSocketApp
并像现有代码一样迭代消息:
import websocket
import json
this = json.dumps({'op': 'subscribe', 'channel': 'trades', 'market': 'BTC-PERP'})
ws = websocket.WebSocket()
ws.connect("wss://ftx.com/ws/")
# from on_open
ws.send(this)
# from on_message
count = 0
for message in ws:
# print(message)
count += 1
print(count)
ws.close()
我会把 DataFrame
操作留给你,因为那是一个单独的问题。
想知道是否有人可以提供帮助。我正在尝试从 websocket 获取数据并将其放入 DataFrame 并计算我收到响应的次数。我觉得在之前计数并在之后发送数据会更容易,但我的代码不起作用。
import websocket
import json
this = json.dumps({'op': 'subscribe', 'channel': 'trades', 'market': 'BTC-PERP'})
def on_open(wsapp):
wsapp.send(this)
def on_message(wsapp, message):
#print(message)
count = 0
for messages in message:
count = count + 1
print(count)
wsapp = websocket.WebSocketApp("wss://ftx.com/ws/", on_message=on_message,
on_open=on_open)
wsapp.run_forever()
我将通过追加 websocket 数据和计数器来创建数据框。这是个好主意吗?
这是我想做的一个例子: example
on_message
每次消息到达时都会调用,所以message
参数等于单个消息。
通过迭代 for messages in message:
中的该消息,您正在迭代消息字符串的字符,并对每个字符进行计数。
一种解决方案是使用 class 来跟踪消息计数:
import websocket
import json
this = json.dumps({'op': 'subscribe', 'channel': 'trades', 'market': 'BTC-PERP'})
def on_open(wsapp):
wsapp.send(this)
class Counter:
def __init__(self):
self.count = 0
def on_message(self, wsapp, message):
#print(message)
self.count += 1
print(self.count)
counter = Counter()
wsapp = websocket.WebSocketApp("wss://ftx.com/ws/", on_message=counter.on_message,
on_open=on_open)
wsapp.run_forever()
或者您可以使用 WebSocket
而不是 WebSocketApp
并像现有代码一样迭代消息:
import websocket
import json
this = json.dumps({'op': 'subscribe', 'channel': 'trades', 'market': 'BTC-PERP'})
ws = websocket.WebSocket()
ws.connect("wss://ftx.com/ws/")
# from on_open
ws.send(this)
# from on_message
count = 0
for message in ws:
# print(message)
count += 1
print(count)
ws.close()
我会把 DataFrame
操作留给你,因为那是一个单独的问题。