Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 改进PyMongo套接字recv_Sockets_Python 3.x_Pymongo 3.x - Fatal编程技术网

Sockets 改进PyMongo套接字recv

Sockets 改进PyMongo套接字recv,sockets,python-3.x,pymongo-3.x,Sockets,Python 3.x,Pymongo 3.x,我用cProfile在我的代码中做了一些评测(使用PyMongo 3.0.3进行了大量的批量操作),结果发现很多时间都花在了套接字上: 14006 68.823 0.005 68.823 0.005{socket.socket对象的方法“recv”} 我发现了这一点,解决办法很简单。有没有办法将TCP\u NOWAIT选项传递到PyMongo,而不必更改libs代码?也许您可以使用monkey-patch-socket #before you import or do anything... i

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

14006 68.823 0.005 68.823 0.005{socket.socket对象的方法“recv”}


我发现了这一点,解决办法很简单。有没有办法将
TCP\u NOWAIT
选项传递到
PyMongo
,而不必更改libs代码?

也许您可以使用monkey-patch-socket

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

嘿,你发现这件事了吗?遇到同样的问题,非常感谢您的最新发现。不幸的是,没有。我实际上不再从事这个项目了,但我当时发现PyMongo显然有自己的套接字实现。甚至有评论声称标准套接字相关函数由于某种原因无法使用。好的,谢谢你回来,如果我找到相关的解决方案,我会在这里添加。我已经开始悬赏。我希望它能帮助你。