Веб-сокет и длительная функция, которая анализирует данные - PullRequest
0 голосов
/ 02 мая 2020

Я получаю цену через веб-сокет от некоторого известного криптообмена.

import websocket
ws = websocket.WebSocketApp("wss://stream.binance.com:9443/stream?streams=%s@aggTrade/%s@aggTrade"%('btc', 'usdt'),on_message=on_message,on_error=on_error,on_close=on_close)

Это код, отлично работает

def on_message(ws,message):
    print(message['price'])

Но давайте предположим, что у меня есть тяжелая функция , которая оценивает данные, и требуется некоторое время , чтобы принять решение торговать или не торговать:

def on_message(ws,message):

    print(message['price'])
    #lets suppose we have some heavy function here which takes 5 seconds to analyze the data
    some_heavy_function()

def some_heavy_function():
    #i added this sleep just to imitate heavy function
    sleep(5)

В этом случае цена, которую я напечатал, я получаю с задержкой в ​​5 секунд, это цена с задержкой , которая составляла 5 и более секунд go. Поэтому я не получаю данные в реальном времени здесь ![enter image description here

Итак, еще раз: когда я пытаюсь добавить некоторую тяжелую функцию для анализа данных из websocket , данные, которые я получаю от websocket , становятся в некотором роде очередями , поэтому я получаю цены с 5 или более секундами задержка . И мне нужно было , чтобы избавиться от этой задержки.

Существует ли общий способ справиться с этим?

Что я могу сделать с этим? Я думаю о сохранении данных в базе данных и получении последнего значения, но мне не очень нравится эта опция

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...