Binance Websocket 客户端在一段时间后停止
Binance Websocket client stops after a while
我正在使用 Binance Websocket 来监听帐户事件 MARKET 事件。我从 masters 复制每一个命令来解决它工作得很好当我 运行 它和它从所有 master 复制。但是,当我 运行 它在后台使用 nohup Linux 服务时,它会在脚本运行 运行 3 天后停止读取任何事件。我试图捕获 STDERR 但脚本中没有任何内容。即使它作为 运行ning 进程出现在 htop 中,但没有完成它的工作。
我尝试使用 asyncio 框架,但我遇到了同样的问题。我需要同时听multi-master,并且要听很长时间运行
import csv
import math
import threading
import time
from datetime import datetime
from binance import ThreadedWebsocketManager, Client
masters = [
[
'api1',
'secret1',
'test1'
],
[
'api2',
'secret2',
'test2'
],
]
def CopyOrder(order, client, name):
# some code to copy order from master
def main(api_key: str, api_secret: str, name: str):
print("Start listening on", name) # Debug
twm = ThreadedWebsocketManager(api_key=api_key, api_secret=api_secret)
cl = Client(api_key=api_key, api_secret=api_secret, testnet=False)
twm.start() # Start the websocket manager
def handle_socket_message(msg):
if msg['e'] == 'executionReport':
# check if it is order or not
CopyOrder(order=msg, client=cl, name=name)
twm.start_user_socket(callback=handle_socket_message)
twm.join()
if __name__ == "__main__":
for master in masters:
# listen to all masters for new orders
thread = threading.Thread(target=main, args=(master[0], master[1], master[2]))
thread.start()
引用自币安
https://binance-docs.github.io/apidocs/spot/en/#websocket-market-streams
A single connection to stream.binance.com is only valid for 24 hours; expect to be disconnected at the 24 hour mark
我也在使用 Binance Websocket,我注意到同样的随机断开连接,有时是一天后,有时是几天后,所以我现在有一个正常运行时间检查,我管理 disconnection/reconnection
我做了以下操作,每 1 小时停止并重新启动。
当为真时:
user_socket = twm.start_user_socket(callback=handle_socket_message)
time.sleep(3600)
self.twm.stop_socket(user_socket)
但是我又发现了一个问题,我会无限期的开线程,一周内我有100多个,就增加了内存和cpu,不知道为什么不关闭。
如果有人有答案,我很感激。
1 主线程 2760 假 11
2 ThreadPoolExecutor-0_0 20836 真 11
3 ThreadPoolExecutor-1_0 24580 真 11
4 ThreadPoolExecutor-0_1 18608 正确 11
5 ThreadPoolExecutor-1_1 26140 真 11
6 ThreadPoolExecutor-1_2 12320 真 11
7 ThreadPoolExecutor-1_3 16352 真 11
8 ThreadPoolExecutor-1_4 26160 真 11
9 ThreadPoolExecutor-1_5 23196 正确 11
10 ThreadPoolExecutor-1_6 15032 正确 11
11 ThreadPoolExecutor-1_7 25932 正确 11
问题是他们不关闭,我不知道如何关闭。
我正在使用 Binance Websocket 来监听帐户事件 MARKET 事件。我从 masters 复制每一个命令来解决它工作得很好当我 运行 它和它从所有 master 复制。但是,当我 运行 它在后台使用 nohup Linux 服务时,它会在脚本运行 运行 3 天后停止读取任何事件。我试图捕获 STDERR 但脚本中没有任何内容。即使它作为 运行ning 进程出现在 htop 中,但没有完成它的工作。 我尝试使用 asyncio 框架,但我遇到了同样的问题。我需要同时听multi-master,并且要听很长时间运行
import csv
import math
import threading
import time
from datetime import datetime
from binance import ThreadedWebsocketManager, Client
masters = [
[
'api1',
'secret1',
'test1'
],
[
'api2',
'secret2',
'test2'
],
]
def CopyOrder(order, client, name):
# some code to copy order from master
def main(api_key: str, api_secret: str, name: str):
print("Start listening on", name) # Debug
twm = ThreadedWebsocketManager(api_key=api_key, api_secret=api_secret)
cl = Client(api_key=api_key, api_secret=api_secret, testnet=False)
twm.start() # Start the websocket manager
def handle_socket_message(msg):
if msg['e'] == 'executionReport':
# check if it is order or not
CopyOrder(order=msg, client=cl, name=name)
twm.start_user_socket(callback=handle_socket_message)
twm.join()
if __name__ == "__main__":
for master in masters:
# listen to all masters for new orders
thread = threading.Thread(target=main, args=(master[0], master[1], master[2]))
thread.start()
引用自币安 https://binance-docs.github.io/apidocs/spot/en/#websocket-market-streams
A single connection to stream.binance.com is only valid for 24 hours; expect to be disconnected at the 24 hour mark
我也在使用 Binance Websocket,我注意到同样的随机断开连接,有时是一天后,有时是几天后,所以我现在有一个正常运行时间检查,我管理 disconnection/reconnection
我做了以下操作,每 1 小时停止并重新启动。
当为真时:
user_socket = twm.start_user_socket(callback=handle_socket_message)
time.sleep(3600)
self.twm.stop_socket(user_socket)
但是我又发现了一个问题,我会无限期的开线程,一周内我有100多个,就增加了内存和cpu,不知道为什么不关闭。 如果有人有答案,我很感激。
1 主线程 2760 假 11
2 ThreadPoolExecutor-0_0 20836 真 11
3 ThreadPoolExecutor-1_0 24580 真 11
4 ThreadPoolExecutor-0_1 18608 正确 11
5 ThreadPoolExecutor-1_1 26140 真 11
6 ThreadPoolExecutor-1_2 12320 真 11
7 ThreadPoolExecutor-1_3 16352 真 11
8 ThreadPoolExecutor-1_4 26160 真 11
9 ThreadPoolExecutor-1_5 23196 正确 11
10 ThreadPoolExecutor-1_6 15032 正确 11
11 ThreadPoolExecutor-1_7 25932 正确 11
问题是他们不关闭,我不知道如何关闭。