2017-02-18 36 views
5

Próbuję się Sanic i prowadziła Hello World aplikację wyjątkiem dodałem spać w przewodnika żądanie:non-blocking wnioski w Šanić ramach

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

Jednak, gdy ten, to nadal na bloki każde żądanie:

$ 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] 

W dwóch oddzielnych zacisków:

$ 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 

Myślałem pomysł Sanic jest w stanie przetwarzać wszystkie żądania asynchronicznie i nie blokować, dopóki nie zakończy się przetwarzanie następnego. Czy coś mi umyka?

Odpowiedz

9

Wymień time.sleep(5) z:

await asyncio.sleep(5) 
+0

Ahhh, duh, wszystko w ramach obsługi musi być non-blocking, jak również. Dzięki! – mart1n