使用 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 操作留给你,因为那是一个单独的问题。