2015-09-01 15 views
6

Ich habe einige Profilierung in meinem Code getan (mit PyMongo 3.0.3 mit viel Bulk-Operationen) mit cProfile und es stellt sich heraus, dass eine Menge Zeit auf Buchsen ausgegeben wird:PyMongo Buchse recv

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

Ich habe diese somewhat related answer gefunden und die Lösung ist einfach. Gibt es eine Möglichkeit, die Option TCP_NOWAIT an PyMongo zu übergeben, ohne den libs-Code ändern zu müssen?

+0

hey, hast du darauf, alles auf diese aus? Wenn Sie sich mit dem gleichen Thema befassen, würden wir uns sehr über ein Update Ihrer Ergebnisse freuen. –

+0

Leider, nein, habe ich nicht. Ich arbeite eigentlich nicht mehr am Projekt, aber was ich damals herausgefunden habe, ist, dass PyMongo anscheinend eine eigene Implementierung der Sockets hat. Es gab sogar Kommentare zu der Behauptung, dass die Standard-Socket-Funktionen aus irgendeinem Grund nicht verwendet werden könnten. – cenouro

+0

ok, danke für die zurück, wenn ich eine relevante Lösung finde, werde ich es hier hinzufügen. –

Antwort

-1

Vielleicht können Sie Affe Patch Buchse ...

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