gpt4 book ai didi

c# - 彭博 API 请求超时

转载 作者:太空狗 更新时间:2023-10-29 23:11:47 27 4
gpt4 key购买 nike

设置 ReferenceDataRequest 后,我​​将其发送到 EventQueue

Service refdata = _session.GetService("//blp/refdata");
Request request = refdata.CreateRequest("ReferenceDataRequest");
// append the appropriate symbol and field data to the request
EventQueue eventQueue = new EventQueue();
Guid guid = Guid.NewGuid();
CorrelationID id = new CorrelationID(guid);
_session.SendRequest(request, eventQueue, id);
long _eventWaitTimeout = 60000;
myEvent = eventQueue.NextEvent(_eventWaitTimeout);

通常我可以从队列中获取消息,但现在我遇到了这种情况,如果我在应用程序的同一次运行中发出多个请求(通常在第十次左右),我会看到一个 超时 事件类型

if (myEvent.Type == Event.EventType.TIMEOUT)
throw new Exception("Timed Out - need to rethink this strategy");
else
msg = myEvent.GetMessages().First();

这些是在同一个线程上制作的,但我假设沿线的某个地方我正在使用而不是释放。

有人有任何线索或建议吗?

在 SO 上对 BLP 的 API 的引用不多,但希望我们可以开始纠正这种情况。

最佳答案

感谢您在初始帖子中包含的代码,我只是想分享一些东西。

如果您长时间请求历史盘中数据(这会导致 Bloomberg API 生成许多事件),请不要使用 API 文档中指定的模式,因为它最终可能会使您的应用程序运行速度非常慢检索所有事件。基本上,不要在 Session 对象上调用 NextEvent()!请改用专用的 EventQueue。

而不是这样做:

var cID = new CorrelationID(1);
session.SendRequest(request, cID);
do {
Event eventObj = session.NextEvent();
...
}

这样做:

var cID = new CorrelationID(1);
var eventQueue = new EventQueue();
session.SendRequest(request, eventQueue, cID);
do {
Event eventObj = eventQueue.NextEvent();
...
}

这可以带来一些性能提升,尽管众所周知 API 不是特别确定的...

关于c# - 彭博 API 请求超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1443446/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com