2017-04-23 63 views
1

問題是服務器在第一個請求未返回之前不接受任何請求。Python 3.6。阻止I/O。服務器在處理第一個請求時不接受任何請求

import asyncio 
import datetime as dt 
from aiohttp import web 


async def search(request): 
    print('!START! %s' % dt.datetime.now()) 

    await asyncio.sleep(5) 

    print('!--END! %s' % dt.datetime.now()) 
    return web.json_response(data={}) 


app = web.Application() 
app.router.add_get('/search/', search) 

web.run_app(app) 


#run_server 
#python -m aiohttp.web -H localhost -P 8080 handler:init_func 

例子: 我幾乎在同一時間運行在兩個選項卡http://localhost:8080/search/。 但我看到請求正在順序處理。

!START! 2017-04-24 12:05:37.978347 
!--END! 2017-04-24 12:05:47.980859 
!START! 2017-04-24 12:05:48.037671 
!--END! 2017-04-24 12:05:58.040659 

但我預計請求將被並行處理。

!START! 2017-04-24 12:05:37.978347 
!START! 2017-04-24 12:05:38.000000 
!--END! 2017-04-24 12:05:47.980859 
!--END! 2017-04-24 12:05:48.000000 

我做了什麼錯事?

+0

你怎麼調用搜索(請求)功能?請提供[最小,完整和可驗證的示例](https://stackoverflow.com/help/mcve)。 –

+0

從意見@hiroprotagonist '導入搜索 應用= web.Application() app.router.add_get( '/搜索/',搜索) routes.setup(APP)' – Roman

+0

你能解釋一下你的問題? 「直到第一個請求沒有返回」是什麼意思? –

回答

1

大多數瀏覽器在內部使用連接池,並且不會創建到同一主機的新連接。因此兩頁共享相同的打開的套接字。

相關問題