我想将Websocket数据消费并保存到pandas DataFrame中,以便其他函数使用。但我对它们非常不熟悉,最初因为试图直接将DataFrame参数传递给on_message()而产生错误。这个链接建议使用
partial 来添加参数,但我仍然遇到了“error from callback <function on_message at 0x000002A098207510>:local variable 'df' referenced before assignment”错误。
我意识到有更好的方法来处理数据而不是使用DataFrame,但我想先让它工作。谢谢。
import websocket
import pandas as pd
import json
from functools import partial
# create empty df
df = pd.DataFrame(columns=['foreignNotional','grossValue','homeNotional','price','side','size','symbol','tickDirection',
'timestamp','trdMatchID'])
def on_message(ws, message):
msg = json.loads(message)
print(msg)
df = df
df = df.append(msg)
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
return
func = partial(on_message, df)
ws.on_message = func
if __name__ == "__main__":
#websocket.enableTrace(True)
ws = websocket.WebSocketApp("wss://www.bitmex.com/realtime?subscribe=trade:XBTUSD",
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws.on_open = on_open
ws.run_forever()