Я получаю цену через веб-сокет от некоторого известного криптообмена.
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. Поэтому я не получаю данные в реальном времени здесь
Итак, еще раз: когда я пытаюсь добавить некоторую тяжелую функцию для анализа данных из websocket , данные, которые я получаю от websocket , становятся в некотором роде очередями , поэтому я получаю цены с 5 или более секундами задержка . И мне нужно было , чтобы избавиться от этой задержки.
Существует ли общий способ справиться с этим?
Что я могу сделать с этим? Я думаю о сохранении данных в базе данных и получении последнего значения, но мне не очень нравится эта опция