2015-09-01 12 views
6

मैं अपने कोड (PyMongo 3.0.3 का उपयोग करके बल्क संचालन का एक बहुत के साथ) cProfile साथ में कुछ रूपरेखा किया है और यह पता चला है कि बहुत समय सॉकेट पर खर्च किया जाता है:में सुधार PyMongo सॉकेट recv

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

मुझे यह somewhat related answer मिला है और समाधान सरल है। क्या TCP_NOWAIT विकल्प PyMongo को libs कोड को बदलने के बिना पास करने का कोई तरीका है?

+0

हे, तुम बाहर इस पर कुछ भी समझ गए थे? एक ही मुद्दे में चल रहा है, आपके निष्कर्षों पर एक अद्यतन की सराहना करता है। –

+0

दुर्भाग्य से, नहीं, मैंने नहीं किया है। मैं वास्तव में इस परियोजना पर काम नहीं कर रहा हूं, लेकिन उस समय मुझे जो मिला वह यह है कि प्योंमोन्गो के पास जाहिर तौर पर सॉकेट का अपना कार्यान्वयन है। दावा करने पर भी टिप्पणियां थीं कि किसी कारण से मानक सॉकेट से संबंधित कार्यों का उपयोग नहीं किया जा सकता था। – cenouro

+0

ठीक है, वापस पाने के लिए धन्यवाद, अगर मुझे कोई प्रासंगिक समाधान मिल जाए, तो मैं इसे यहां जोड़ दूंगा। –

उत्तर

-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 ... 
संबंधित मुद्दे