我使用 cProfile 在我的代码中进行了一些分析(使用 PyMongo 3.0.3 和大量的批量操作),结果发现很多时间都花在了套接字上:
14006 68.823 0.005 68.823 0.005 {method 'recv' of '_socket.socket' objects}
我找到了这个有点相关的答案,解决方案很简单。有什么方法可以将TCP_NOWAIT
选项传递给PyMongo
而无需更改库代码?
我使用 cProfile 在我的代码中进行了一些分析(使用 PyMongo 3.0.3 和大量的批量操作),结果发现很多时间都花在了套接字上:
14006 68.823 0.005 68.823 0.005 {method 'recv' of '_socket.socket' objects}
我找到了这个有点相关的答案,解决方案很简单。有什么方法可以将TCP_NOWAIT
选项传递给PyMongo
而无需更改库代码?
也许你可以猴子补丁插座......
#before you import or do anything...
import socket
socket.raw_socket = socket.socket
def my_socket(*args, **kws):
sock = socket.socket(*args, **kws)
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
return sock
socket.socket = my_socket
#cross fingers ...