2017-11-08 29 views
6

मैं एक अजवाइन कार्य में एक जीआरपीसी सर्वर से कनेक्ट करने की कोशिश कर रहा हूं। मैं कोडएक सेलेरी कार्य में grpc टाइमआउट

timeout = 1 
    host = '0.tcp.ngrok.io' 
    port = '7145' 
    channel = grpc.insecure_channel('{0}:{1}'.format(host, port)) 
    try: 
     grpc.channel_ready_future(channel).result(timeout=timeout) 
    except grpc.FutureTimeoutError: 
     sys.exit(1) 
    stub = stub(channel) 

जब मैं अजगर खोल के माध्यम से इस स्निपेट को चलाने का निम्न भाग है, मैं कनेक्शन स्थापित करने, और निष्पादित GRPC तरीकों में सक्षम हूँ। हालांकि, जब मैं इसे सेलेरी कार्य के माध्यम से चलाता हूं, तो मुझे grpc.FutureTimeoutError मिलता है, और कनेक्शन स्थापित नहीं होता है।

सेलेरी कार्यकर्ता जीआरपीसी सर्वर के समान मशीन पर स्थित है। मैंने जीआरपीसी सर्वर को पिंग करने के लिए socket लाइब्रेरी का उपयोग करने का प्रयास किया, और यह काम किया (यह कुछ जंक प्रतिक्रिया लौटा)।

मैं पाइथन 2.7 का उपयोग कर रहा हूं, grpcio==1.6.0 स्थापित है। सेलेरी संस्करण 4.1.0 है। कोई संकेतक सहायक होगा।

+0

क्या आप उसी मशीन पर खोल और अजवाइन चला रहे हैं? क्या आप वाकई यहां शामिल कोई फ़ायरवॉल नहीं है? – kichik

+0

वे एक ही मशीन पर चल रहे हैं। कनेक्शन कनेक्शन नहीं होना चाहिए, क्योंकि सेलेरी कार्य में, मैंने 'सॉकेट' लाइब्रेरी से कनेक्ट करने का प्रयास किया। यह जीआरपीसी सर्वर को मारने में सक्षम था (हालांकि यह कनेक्ट नहीं हुआ) – saurabhsood91

उत्तर

4

मेरा मानना ​​है कि सेलेरी हुड के नीचे कांटा का उपयोग करती है, और जीआरपीसी 1.6 किसी भी फोर्किंग व्यवहार का समर्थन नहीं करता है।

जीआरपीसी 1.7 को अपडेट करने का प्रयास करें।

+0

जो काम करता था! जवाब के लिए धन्यवाद! – saurabhsood91

+0

इसे ट्रैक करने के लिए दो वरिष्ठ इंजीनियरों को 3 घंटे लग गए। अगर हम जल्द ही खोज चुके थे। – sberry

संबंधित मुद्दे