首页 > 解决方案 > 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并检测更改然后停止循环并重新运行它,但也无法弄清楚如何。

标签: python

解决方案


推荐阅读