python - python在监听时更改websocket参数
问题描述
这是网络套接字:
async def run_microservice():
factored_symbols_list = read_redis('symbols_list').decode()
factored_symbols_list = ast.literal_eval(factored_symbols_list)
url = "wss://stream.binance.com:9443/ws/"
first_pair = factored_symbols_list[0]
rest_of_pairs = factored_symbols_list[1:]
async with websockets.connect(url+first_pair) as sock:
pairs = {"method": "SUBSCRIBE", "params": rest_of_pairs, "id": 1}
pairs = json.dumps(pairs)
await sock.send(pairs)
print(f"> {pairs}")
while True:
start = time.time()
resp = await sock.recv()
resp = json.loads(resp)
k = resp.get('k')
if k is not None:
rows = get_rows(k['s'], k['c'])
rows.apply(process_row, axis=1)
end = time.time()
if __name__ == '__main__':
asyncio.run(run_microservice())
所以我在这里的问题是该factored_symbols_list
变量仅在第一次调用该函数时才被分配asyncio.run(run_microservice())
,现在我该如何减轻这种情况并重新分配factored_symbols_list
,如果不是每次然后每隔 x 秒。
我想过使用背景thread
来检查redis
值是否已更改,但我不知道如何发送新闻参数。
我的另一个想法是也使用背景thread
并检测更改然后停止循环并重新运行它,但也无法弄清楚如何。
解决方案
推荐阅读
- java - JDK 11 上的 RabbitMQ 客户端 SSL 握手问题
- node.js - 具有动态参数数量的NodeJS递归
- java - spring boot 反馈邮件发送器中如何解决这个 NumberFormatException
- windows - “for”和“move”命令在哪里?
- java - 如何在控制器中传递多个参数?
- javascript - 如何在 Google 表格中将缩写数字更改为纯数字?
- git - Git 分支详细信息
- jquery - 如何通过输入 onchange 更改多日期属性
- python - 如何修复 ValueError:odoo 中不存在字段“活动”
- numerical-integration - Runge kutta (RK4) 表达式如何扩展?