У меня есть этот простой пример из официального Binance Futures API , который я запускаю в VS Code. Он создает веб-сокет и получает от него данные:
import logging
from binance_f import SubscriptionClient
from binance_f.constant.test import *
from binance_f.model import *
from binance_f.exception.binanceapiexception import BinanceApiException
from binance_f.base.printobject import *
logger = logging.getLogger("binance-futures")
logger.setLevel(level=logging.INFO)
handler = logging.StreamHandler()
handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
logger.addHandler(handler)
sub_client = SubscriptionClient(api_key=g_api_key, secret_key=g_secret_key)
def error(e: 'BinanceApiException'):
print(e.error_code + e.error_message)
def callback(data_type: 'SubscribeMessageType', event: 'any'):
if data_type == SubscribeMessageType.RESPONSE:
print("Event ID: ", event)
elif data_type == SubscribeMessageType.PAYLOAD:
PrintBasic.print_obj(event)
sub_client.unsubscribe_all()
else:
print("Unknown Data:")
print()
sub_client.subscribe_symbol_ticker_event("btcusdt", callback, error)
Подписка работает, я получаю данные из API. Но после sub_client.unsubscribe_all () больше ничего не происходит - скрипт не возвращается в командную строку терминала. Это просто висит там. Ctrl + C, Ctr + X, Ctrl + Break, ничего не работает.
Я должен жестоко бросить Терминал в корзину - даже это иногда приводит к зависанию VSCode. Выполнение примера из обычного windows cmd дает тот же результат.
Вот как это выглядит в VsCode:
Кто-нибудь знает, что вызывает такое поведение и как вернуться в командную строку ? Или как использовать клиента в реальном мире?