2017-03-07 112 views
0

这是异步python,但在向它发送请求并使用time.sleep(5)进行并行测试时不起作用,但它是顺序并且执行了请求顺序:python中的异步服务器代码在使用asyncio.start_server时不会工作

def main(*args):  
    loop = get_event_loop() 

    coro = asyncio.start_server(handle_echo, '127.0.0.1', 50008,loop=loop) 
    srv = loop.run_until_complete(coro) 
def handle_echo(reader, writer): 
    data = yield from reader.read(500) 
    message = data.decode(encoding='utf-8')    

    nameindex=('name="calculator2"' in message) 
    if nameindex: 
     time.sleep(5) 
     writer.write("Content-Length: 1\r\n\r\n2".encode()) 
     yield from writer.drain() 
    else: 
     writer.write("Content-Length: 1\r\n\r\n1".encode()) 
     yield from writer.drain() 

    print("Close the client socket") 
    writer.close() 
+0

@udi这是我的新代码 –

+1

别在协程中使用'time.sleep',而是使用[asyncio.sleep](https://docs.python.org/3/library/asyncio-task.html#asyncio.sleep)。 – Vincent

+0

@uid好的,我会测试它并通知你。 Tnx –

回答

1

取代:

time.sleep(5) 

有:

await asyncio.sleep(5) 
+0

Thanks.I使用这段代码做了它,它的工作原理:从asyncio.sleep(5) –

+0

等待的收益是在python 3.5-我使用Python 3.4为我的项目,我做了像以前的评论 –

相关问题