2015-09-01 17 views
6

Zrobiłem kilka profili w moim kodu (przy użyciu PyMongo 3.0.3 z wielu operacji masowych) z cProfile i okazuje się, że wiele czasu poświęca się na gniazdach:Poprawa PyMongo gniazdo recv

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

Znalazłem to somewhat related answer, a rozwiązanie jest proste. Czy istnieje sposób na przesłanie opcji TCP_NOWAIT do PyMongo bez konieczności zmiany kodu biblioteki?

+0

hej, czy dowiedzieć się czegoś na ten temat? W tym samym wydaniu bardzo doceniamy aktualizację twoich ustaleń. –

+0

Niestety, nie, nie mam. Nie pracuję już nad projektem, ale w tym czasie odkryłem, że PyMongo ma własną implementację gniazd. Pojawiły się nawet uwagi na temat twierdzenia, że ​​standardowe funkcje związane z gniazdem nie mogą być używane z jakiegoś powodu. – cenouro

+0

ok, dziękuję za odesłanie, jeśli znajdę odpowiednie rozwiązanie, dodam je tutaj. –

Odpowiedz

-1

Może ty gniazdo łata małpa ...

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