【问题标题】:Improve PyMongo socket recv改进 PyMongo socket recv
【发布时间】:2015-11-27 02:59:10
【问题描述】:

我使用 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 而无需更改库代码?

【问题讨论】:

  • 嘿,你有什么发现吗?遇到同样的问题,非常感谢您的发现的更新。
  • 不幸的是,不,我没有。我实际上不再从事该项目了,但当时我发现 PyMongo 显然有自己的套接字实现。甚至还有 cmets 声称由于某种原因无法使用标准套接字相关功能。
  • 好的,感谢您的回复,如果我找到相关的解决方案,我会在此处添加。
  • 我已经开始赏金了。希望对你有帮助。

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


【解决方案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 ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    相关资源
    最近更新 更多