操作系统: windows7;
Python环境: Anaconda Python 2.7 32位;
Vn.py框架: v1.9.2 LTS;
报错内容:
eventEngine2.queue存入的Event实例的type_属性为'eOrder.CTP.2',
这些值不在eventEngine2.handlers字典的key中,
导致__queue队列很多数据没有处理、队列变大等等.
问题:
这是不是个bug?建议怎么解决?
操作系统: windows7;
Python环境: Anaconda Python 2.7 32位;
Vn.py框架: v1.9.2 LTS;
报错内容:
eventEngine2.queue存入的Event实例的type_属性为'eOrder.CTP.2',
这些值不在eventEngine2.handlers字典的key中,
导致__queue队列很多数据没有处理、队列变大等等.
问题:
这是不是个bug?建议怎么解决?
请提供英文原版的报错内容。。。
谢谢您的回复,报错内容如下:
datetime.now()
datetime.datetime(2019, 4, 25, 22, 36, 49, 54000)
ee.__queue.qsize()
1124datetime.now()
datetime.datetime(2019, 4, 25, 22, 39, 30, 990000)
ee.__queue.qsize()
1642z1 = ee._queue.get()
z1.type = 'eTick.rb1910'z2 = ee._queue.get()
z2.type = 'eOrder.CTP.2'
还得麻烦您指点迷津!!
如果queue的大小只增加,不减少,只可能是没有启动EventEngine,导致事件没有处理持续挤压导致的。
否则运行过程中即使没有注册处理函数,该事件的数据也会被抛弃掉,不会继续保存着
非常感谢您的回复。
我用active属性确认了下EventEngine是否启动,结果如下:
ee.active
True
用handlers的key确认了下注册的事件类型,结果如下:
ee.handlers.keys()
['eError.', 'eOrder.', 'eTimer', 'eContract.', 'eLog', 'eTick.', 'ePosition.', 'eTrade.', 'eAccount.']
正如开头咨询的那样, 上面z1、z2的类型('eTick.rb1910'、'eOrder.CTP.2')并没有在ee.handlers的字典中, 也就不会被处理,
是不是这个原因导致EventEngine.queue队列一直变大?
不会,没有注册处理函数的事件会直接被抛弃,不会在队列里呆着不处理。
还有种情况就是看是不是有处理函数耗时太长,导致事件处理线程阻塞卡住
谢谢,我再想想、测试下。