改进PyMongo套接字recv

时间:2015-09-01 18:55:37

标签: sockets python-3.x pymongo-3.x

我在我的代码中使用cProfile对我的代码(使用带有大量批量操作的PyMongo 3.0.3)进行了一些分析,结果发现在套接字上花了很多时间:

14006 68.823 0.005 68.823 0.005 {method 'recv' of '_socket.socket' objects}

我找到了这个somewhat related answer,解决方案很简单。有没有办法将TCP_NOWAIT选项传递给PyMongo而无需更改libs代码?

1 个答案:

答案 0 :(得分:-1)

也许你可以修补插座......

#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 ...