2017-02-18 18 views
5

我嘗試Sanic跑的Hello World應用程序,除了我添加的請求處理程序睡眠:在中信高科框架無阻塞請求

@app.route("/") 
async def test(request): 
    time.sleep(5) 
    return json({"hello": "world"}) 

然而,當我上運行此,它還是塊每個請求:

$ python app.py 
2017-02-18 19:15:22,242: INFO: Goin' Fast @ http://0.0.0.0:8000 
2017-02-18 19:15:22,245: INFO: Starting worker [15867] 

在兩個分開的端子:

$ time curl http://0.0.0.0:8000/ 
{"hello":"world"} 
real 0m5.009s 
user 0m0.003s 
sys  0m0.001s 

$ time curl http://0.0.0.0:8000/ 
{"hello":"world"} 
real 0m9.459s 
user 0m0.000s 
sys  0m0.004s 

我認爲這個想法Sanic能夠異步處理所有請求,並且不會阻塞,直到完成處理下一個請求。我在這裏錯過了什麼嗎?

回答

9

替換time.sleep(5)有:

await asyncio.sleep(5) 
+0

唉唉,咄,處理器內的一切必須是無阻塞的爲好。謝謝! – mart1n