Таймаут запроса API Bloomberg

Вы могли считать первые несколько байтов Потока и сравнить их с волшебными байтами заголовка для JPEG.

5
задан Guru Stron 31 August 2016 в 09:44
поделиться

5 ответов

Я так и не смог решить этот вопрос, но мы нашли обходной путь.

Основываясь на небольшом, очевидно несуществующем комментарии в документации Server API, мы решили создать второй сеанс. Один сеанс отвечает за статические запросы, другой - за реальное время. например

_marketDataSession.OpenService("//blp/mktdata"); 
_staticSession.OpenService("//blp/refdata");

Это означает, что один сеанс работает в режиме подписки, а другой - более синхронно - я думаю, что именно эта двойственность была в корне наших проблем.

С момента внесения этого изменения у нас не было никаких проблем.

3
ответ дан 14 December 2019 в 13:41
поделиться

Приятно видеть другого человека в stackoverflow, который наслаждается болью от bloomberg API: -)

Мне стыдно сказать, что я использую следующий шаблон (подозреваю, скопирован из кода примера). Кажется, что он работает достаточно надежно, но, вероятно, игнорирует некоторые важные сообщения. Но я не понимаю твоей проблемы с тайм-аутом. Это Java, но все языки в основном работают одинаково.

  cid = session.sendRequest(request, null);
  while (true) {
    Event event = session.nextEvent();
    MessageIterator msgIter = event.messageIterator();
    while (msgIter.hasNext()) {
      Message msg = msgIter.next();
      if (msg.correlationID() == cid) {
        processMessage(msg, fieldStrings, result);
      }
    }
    if (event.eventType() == Event.EventType.RESPONSE) {
      break;
    }
  }

Это может сработать, потому что оно потребляет все сообщения от каждого события.

0
ответ дан 14 December 2019 в 13:41
поделиться

Я, читая документацию, согласен с тем, что вам нужны отдельные сеансы для служб «// blp / mktdata» и «// blp / refdata».

1
ответ дан 14 December 2019 в 13:41
поделиться

Похоже, вы делаете слишком много запросов одновременно. BB будет обрабатывать только определенное количество запросов на одно соединение в любой момент времени. Обратите внимание, что открытие все большего количества подключений не поможет, потому что для каждой подписки также есть ограничения. Если вы делаете большое количество запросов одновременно, время ожидания некоторых из них может истечь. Также вам следует полностью обработать запрос (пока вы не получите сообщение RESPONSE) или отменить их. Необработанный частичный запрос тратит слот. Поскольку разделение на два сеанса, похоже, вам помогло, похоже, что вы также делаете много запросов на подписку одновременно. Вы используете подписки как способ делать снимки? То есть подписаться на инструмент, получить начальные значения и отказаться от подписки. В таком случае вам следует попробовать найти другой дизайн. Подписки не предназначены для использования таким образом. Необработанный запрос на подписку также использует слот запроса. Вот почему лучше всего объединить как можно больше подписок в один список подписок, а не делать много отдельных запросов. Надеюсь, это поможет вам в использовании API.

-1
ответ дан 14 December 2019 в 13:41
поделиться

Кстати, я могу ' Я могу сказать из вашего примера кода, но пока вы заблокированы на сообщениях из очереди событий, вы также читаете из основной очереди событий (в отдельной очереди событий)? Вы должны обработать все сообщения вне очереди, особенно если у вас есть незавершенные подписки. Ответы могут выстраиваться в очередь очень быстро. Если вы не обрабатываете сообщения, сеанс может достигнуть некоторых ограничений очереди, что может быть причиной таймаутов. Кроме того, если вы не читаете сообщения, вы можете быть отмечены как медленный потребитель и не получать больше данных, пока не начнете получать ожидающие сообщения. API асинхронный. Очереди событий - это всего лишь способ блокирования определенных запросов без необходимости обрабатывать все сообщения из основной очереди в контексте, где блокировка допустима, и в противном случае было бы трудно прервать логический поток для асинхронной обработки частей.

-1
ответ дан 14 December 2019 в 13:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: