使用 Python 2.6.x 的 xmlrpclib 在客户端和服务器之间交换的消息在服务器端创建了一种“实例”类型,而不是“日期时间”类型。在客户端,我创建了一个新的
updateTime = datetime(year, month, day, hour, minute, second)
print type(updateTime)
print updateTime
Run Code Online (Sandbox Code Playgroud)
结果是
<type 'datetime.datetime'>
2015-10-07 10:21:52
Run Code Online (Sandbox Code Playgroud)
发送时,字典在客户端看起来像这样:
'updateTime': datetime.datetime(2015, 10, 7, 10, 21, 52)
Run Code Online (Sandbox Code Playgroud)
但是服务器端的传入字典是这样的:
'updateTime': <DateTime '20151007T10:21:52' at 7f4dbf4ceb90>
Run Code Online (Sandbox Code Playgroud)
打印类型及其字符串表示如下:
<type 'instance'>
20151007T10:21:52
Run Code Online (Sandbox Code Playgroud)
我们正在使用 xmlrpclib.ServerProxy 但将use_datetime更改为True或False根本没有任何区别。
xmlrpclib.ServerProxy('https://'+rpc_server_addr, allow_none=True, use_datetime=True)
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我也希望接收方有一个 tpye 'datetime.datetime'。
我有一个包含现有数据的集合。我使用 expireAfterSeconds 参数向该集合添加了一个新索引:
2015-11-11T09:09:21.565+0100 I INDEX [conn120] build index on: cmon.cmon.interfaces_history properties: { v: 1, key: { expireAt: 1 }, name: "expireAt_1", ns: "cmon.cmon.interfaces_history", expireAfterSeconds: 1 }
2015-11-11T09:09:21.565+0100 I INDEX [conn120] building index using bulk method
2015-11-11T09:09:21.730+0100 I INDEX [conn120] build index done. scanned 8933 total records. 0 secs
2015-11-11T09:09:21.733+0100 I COMMAND [conn120] command cmon.$cmd command: createIndexes { createIndexes: "cmon.interfaces_history", indexes: [ { expireAfterSeconds: 1, name: "expireAt_1", key: { expireAt: 1 } } ] } keyUpdates:0 writeConflicts:0 numYields:0 reslen:113 locks:{ …Run Code Online (Sandbox Code Playgroud)