2011-09-21 20 views
8

こんにちは私は、学習目的の文字列を返す単一のメソッドを使ってPythonServer(PythonServer.py)という単純なトランプサーバーを作成しようとしています。サーバーコードは以下のとおりです。サーバーを実行すると、ThriftのPythonライブラリで次のようなエラーが発生します。誰もがこの問題を経験し、回避策を提案していますか?Thrift:TypeError:getaddrinfo()引数1はstringまたはNoneでなければなりません。

実行出力:

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()のエラーが発生します。これを修正するには

に行を変更:PythonServer.pyを実行している間、私はこの問題を抱え

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

はい、本当に助けになりました。どうもありがとう。 – farda

+0

よろしくお願いいたします。 –

+1

@fardaチェックボックスをオンにして正解に報いてください。 – wberry

3

...
は私が

transport = TSocket.TServerSocket('9090') 

transport = TSocket.TServerSocket(9090) 

この行を変更しました

と私のサーバーが起動しました。

+0

//これは問題の特定の問題とは一致しませんが、これはOPが持っているエラーを検索するのに役立つと思います。貢献してくれてありがとう、@Madhav Ramesh。 –

0

私は同様の問題がありました。私の修正は

TSocket.TServerSocket('your server ip',port) 
関連する問題