添加vn.rpc模块中使用cPickle作为序列化工具
This commit is contained in:
parent
c57d8c9d26
commit
cbfdae09a6
@ -34,10 +34,13 @@ shared_ptr.h和SoftDollerTier.h中加入了对象比较函数的代码,用于
|
|||||||
3. vn.ib/build/lib下的vnib.so复制到vn.ib/test文件夹下,运行test.py
|
3. vn.ib/build/lib下的vnib.so复制到vn.ib/test文件夹下,运行test.py
|
||||||
4. 会出现上面的undefined symbol错误
|
4. 会出现上面的undefined symbol错误
|
||||||
|
|
||||||
|
更新:编译问题已解决,需要在EClient.h和EClient.cpp中,加入EncodeField<const char*>这一对EncodeField<T>的偏特化实现(well,我并不十分确定是否该用“偏特化”这个词),具体请参考linux文件夹下的代码。
|
||||||
|
|
||||||
|
但目前Linux下的编译在调用eConnect函数时会卡住,从TWS中查看会有API发起的连接处于“pending”的状态,猜测问题可能出在底层的POSIX线程锁相关的地方。
|
||||||
|
|
||||||
### API版本
|
### API版本
|
||||||
版本:IB API for Windows beta 9.72.18
|
版本:IB API for Windows beta 9.72.18
|
||||||
|
|
||||||
日期:2016-09-14
|
日期:2016-09-14
|
||||||
|
|
||||||
链接:[http://interactivebrokers.github.io/](http://interactivebrokers.github.io/)
|
链接:[http://interactivebrokers.github.io/](http://interactivebrokers.github.io/)
|
||||||
|
|
||||||
|
@ -8,6 +8,10 @@ import zmq
|
|||||||
from msgpack import packb, unpackb
|
from msgpack import packb, unpackb
|
||||||
from json import dumps, loads
|
from json import dumps, loads
|
||||||
|
|
||||||
|
import cPickle
|
||||||
|
pDumps = cPickle.dumps
|
||||||
|
pLoads = cPickle.loads
|
||||||
|
|
||||||
|
|
||||||
# 实现Ctrl-c中断recv
|
# 实现Ctrl-c中断recv
|
||||||
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
||||||
@ -18,12 +22,14 @@ class RpcObject(object):
|
|||||||
"""
|
"""
|
||||||
RPC对象
|
RPC对象
|
||||||
|
|
||||||
提供对数据的序列化打包和解包接口,目前提供了json和msgpack两种工具。
|
提供对数据的序列化打包和解包接口,目前提供了json、msgpack、cPickle三种工具。
|
||||||
|
|
||||||
msgpack:性能更高,但通常需要安装msgpack相关工具;
|
msgpack:性能更高,但通常需要安装msgpack相关工具;
|
||||||
json:性能略低但通用性更好,大部分编程语言都内置了相关的库。
|
json:性能略低但通用性更好,大部分编程语言都内置了相关的库。
|
||||||
|
cPickle:性能一般且仅能用于Python,但是可以直接传送Python对象,非常方便。
|
||||||
|
|
||||||
因此建议尽量使用msgpack,如果要和某些语言通讯没有提供msgpack时再使用json。
|
因此建议尽量使用msgpack,如果要和某些语言通讯没有提供msgpack时再使用json,
|
||||||
|
当传送的数据包含很多自定义的Python对象时建议使用cPickle。
|
||||||
|
|
||||||
如果希望使用其他的序列化工具也可以在这里添加。
|
如果希望使用其他的序列化工具也可以在这里添加。
|
||||||
"""
|
"""
|
||||||
@ -32,7 +38,8 @@ class RpcObject(object):
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
"""Constructor"""
|
"""Constructor"""
|
||||||
# 默认使用msgpack作为序列化工具
|
# 默认使用msgpack作为序列化工具
|
||||||
self.useMsgpack()
|
#self.useMsgpack()
|
||||||
|
self.usePickle()
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
def pack(self, data):
|
def pack(self, data):
|
||||||
@ -63,6 +70,16 @@ class RpcObject(object):
|
|||||||
def __msgpackUnpack(self, data):
|
def __msgpackUnpack(self, data):
|
||||||
"""使用msgpack解包"""
|
"""使用msgpack解包"""
|
||||||
return unpackb(data)
|
return unpackb(data)
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
def __picklePack(self, data):
|
||||||
|
"""使用cPickle打包"""
|
||||||
|
return pDumps(data)
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
def __pickleUnpack(self, data):
|
||||||
|
"""使用cPickle解包"""
|
||||||
|
return pLoads(data)
|
||||||
|
|
||||||
#----------------------------------------------------------------------
|
#----------------------------------------------------------------------
|
||||||
def useJson(self):
|
def useJson(self):
|
||||||
@ -75,6 +92,12 @@ class RpcObject(object):
|
|||||||
"""使用msgpack作为序列化工具"""
|
"""使用msgpack作为序列化工具"""
|
||||||
self.pack = self.__msgpackPack
|
self.pack = self.__msgpackPack
|
||||||
self.unpack = self.__msgpackUnpack
|
self.unpack = self.__msgpackUnpack
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
def usePickle(self):
|
||||||
|
"""使用cPickle作为序列化工具"""
|
||||||
|
self.pack = self.__picklePack
|
||||||
|
self.unpack = self.__pickleUnpack
|
||||||
|
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
Loading…
Reference in New Issue
Block a user