作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
设置 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/
我是一名优秀的程序员,十分优秀!