Каков наилучший способ многократного выполнения функции в Python? - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь получить некоторые данные с веб-сайта. Проблема, с которой я столкнулся, заключается в том, что он извлекает значение данных, а затем просто непрерывно его перепечатывает, а не извлекает самое последнее значение данных в реальном времени и обновляет его. Я получил код от https://github.com/BitMEX/api-connectors/tree/master/official-ws/python и внес несколько изменений.

from bitmex_websocket import BitMEXWebsocket
import logging
from time import sleep

# Basic use of websocket.
def run():
    logger = setup_logger()

    # Instantiating the WS will make it connect. Be sure to add your api_key/api_secret.
    ws = BitMEXWebsocket(endpoint="https://www.bitmex.com/api/v1", symbol="XBTUSD",
                         api_key=None, api_secret=None)

    logger.info("Instrument data: %s" % ws.get_instrument())

    # Run forever
    while(ws.ws.sock.connected):
        logger.info("Ticker: %s" % ws.get_ticker())
        if ws.api_key:
            logger.info("Funds: %s" % ws.funds())
        #logger.info("Market Depth: %s" % ws.market_depth())
        (logger.info("Recent Trades: %s\n\n" % ws.recent_trades()[0]["size"]))
        sleep(1)


def setup_logger():
    # Prints logger info to terminal
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)  # Change this to DEBUG if you want a lot more info
    ch = logging.StreamHandler()
    # create formatter
    formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
    # add formatter to ch
    ch.setFormatter(formatter)
    logger.addHandler(ch)
    return logger


if __name__ == "__main__":
    run()
...