1

私はデータを継続的に送信し、クライアントからのプロンプトを待って、変数を設定したり、ログファイルの内容を転送したりする予定のPythonサーバーを持っています。現在私はクライアントからのプロンプトを再生しようとしています。Python asyncioリソースが利用できません

私はこれを行うにはasyncioを利用しようとしていますが、私は次のようなエラーに実行しています:

() '一時的に利用できないリソースを'、BlockingIOError(11)

私のサーバーのコードは次のとおりです。

loop = asyncio.get_event_loop() 

async def server(): 
     s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 

     host = '' 
     port = 1194 

     s.bind((host,port)) 
     print ("bouned to port") 
     s.listen(4) 
     while True: 

       conn, addr = await loop.sock_accept(s) 

       if conn: 
         print ("connected to address: {!r}".format(addr)) 
#      print (conn) 
         d = loop.create_task(temp_sender(conn)) 
         try: 
          await d 
         except StopIteration: 
          pass 
async def temp_sender(conn): 
     print("temp_sender activated") 

     try: 
       data = await conn.recv(1024) 
       print (data) 
       sdata = data.decode() 
       print (sdata) 
       conn.writeline("the set temp is: ", sdata) 
     except: 
       print (sys.exc_info()) 
       pass 

connからデータを受信しようとすると、temp_sender関数でエラーが発生します。

この可用性エラーを修正するにはどうすればよいですか?

答えて

1
import asyncio 
@asyncio.coroutine 
def handle_echo(reader, writer): 
    data = yield from reader.read(1024) 
    # reader reads from client 
    #writer writes to client 

    message = data 
    addr = writer.get_extra_info('peername') 
    print("Received %r from %r" % (message, addr)) 

    print("Send: %r" % message) 
    writer.write(data) 
    yield from writer.drain() 

    print("Closing client socket") 
    writer.close() 

loop = asyncio.get_event_loop() 
##the code below will run whenever a new client connects (multiple at a time) 
coro = asyncio.start_server(handle_echo, '127.0.0.1',1194, loop=loop) 
server = loop.run_until_complete(coro) 

# Serve requests until Ctrl+C is pressed 
print('Serving on {}'.format(server.sockets[0].getsockname())) 
try: 
    loop.run_forever() 
except KeyboardInterrupt: #server stops on a keyboard interrupt 
    pass 

# Closing the server 
server.close() 
loop.run_until_complete(server.wait_closed()) 
loop.close() 
+0

プログラミング言語を使用して質問にタグを付けてください – kism3t

+0

これはpython3.4.xで動作します – Aravind

関連する問題