Улучшить сокет PyMongo recv

Я сделал некоторое профилирование в моем коде (используя PyMongo 3.0.3 с большим количеством операций с массой) с cProfile, и выясняется, что много времени тратится на сокеты:

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

Я нашел этот несколько связанный ответ, и решение прост. Есть ли способ передать параметр TCP_NOWAIT на PyMongo без изменения кода libs?

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

licensed under cc by-sa 3.0 with attribution.