2011-09-21 18 views
8

हाय होना चाहिए मैं अजगर एक भी विधि है कि प्रयोजनों के सीखने के लिए एक स्ट्रिंग रिटर्न के साथ (PythonServer.py नाम) में एक साधारण बचत सर्वर लिखने की कोशिश कर रहा हूँ। सर्वर कोड नीचे है। जब मैं सर्वर चलाता हूं तो मुझे थ्रिफ्ट के पायथन पुस्तकालयों में निम्न त्रुटियां आ रही हैं। क्या किसी ने इस समस्या का अनुभव किया है और एक समाधान का सुझाव दिया है?बचत: लेखन त्रुटि: getaddrinfo() के तर्क 1 स्ट्रिंग या कोई भी

निष्पादन उत्पादन:

Starting server 
    Traceback (most recent call last): 
    File "/home/dae/workspace/BasicTestEnvironmentV1.0/src/PythonServer.py", line  38,  in <module> 
    server.serve() 
    File "usr/lib/python2.6/site-packages/thrift/server/TServer.py", line 101, in serve 
    File "usr/lib/python2.6/site-packages/thrift/transport/TSocket.py", line 136, in  listen 
    File "usr/lib/python2.6/site-packages/thrift/transport/TSocket.py", line 31, in  _resolveAddr 
    TypeError: getaddrinfo() argument 1 must be string or None 

PythonServer.java

 port = 9090 

    import MyService as myserv 
    #from ttypes import * 

    # Thrift files 
    from thrift.transport import TSocket 
    from thrift.transport import TTransport 
    from thrift.protocol import TBinaryProtocol 
    from thrift.server import TServer 

    # Server implementation 
    class MyHandler: 
     # return server message 
     def sendMessage(self, text): 
      print text 
      return 'In the garage!!!' 


    # set handler to our implementation 
    handler = MyHandler() 

    processor = myserv.Processor(handler) 
    transport = TSocket.TServerSocket(port) 
    tfactory = TTransport.TBufferedTransportFactory() 
    pfactory = TBinaryProtocol.TBinaryProtocolFactory() 

    # set server 
    server = TServer.TThreadedServer(processor, transport, tfactory, pfactory) 

    print 'Starting server' 
    server.serve() ##### LINE 38 GOES HERE ########## 

उत्तर

18

आपकी समस्या लाइन है:

transport = TSocket.TServerSocket(port) 

जब TSocket.TServerSocket जो एक तर्क, मूल्य व्यवहार किया जाता है बुला एक मेजबान पहचानकर्ता, इसलिए getaddrinfo() साथ त्रुटि के रूप में।

कि ठीक करने के लिए लाइन बदलने के लिए:

transport = TSocket.TServerSocket(port=port) 
+1

हां, वास्तव में इससे मदद मिली। बहुत बहुत धन्यवाद। – farda

+0

आपका स्वागत है। –

+1

@farda चेक-बॉक्स पर क्लिक करके सही उत्तरों को पुरस्कृत करें। – wberry

3

मैं इस समस्या थी PythonServer.py चलाते समय ...
मैं

transport = TSocket.TServerSocket('9090') 
को यह लाइन

transport = TSocket.TServerSocket(9090) 

बदल

और अपने सर्वर चल रहा शुरू कर दिया।

+0

//, हालांकि इस सवाल का विशिष्ट समस्या से मेल नहीं खाता, मुझे लगता है कि इस त्रुटि ओपी मिला तलाश कर रहे लोगों में मदद मिलेगी। योगदान के लिए धन्यवाद, @ माधव रमेश। –

0

मैं एक ऐसी ही समस्या थी। मेरा फिक्स

TSocket.TServerSocket('your server ip',port) 
संबंधित मुद्दे