2017-04-23 1 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 

例: 私は、ほぼ同時に2つのタブで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

どのように 'search(request)'関数を呼び出していますか? [最小で完全で検証可能な例](https://stackoverflow.com/help/mcve)を提供してください。ビューから@hiroprotagonist 'ため –

+0

は、検索 アプリ= web.Application() app.router.add_get( '/検索/'、サーチ) routes.setup(アプリ)' – Roman

+0

をインポートし、あなたの詳細を説明することができます問題?あなたは「与えられた最初の要求が返ってこないうちに」とはどういう意味ですか? –

答えて

1

ほとんどのブラウザは内部的に接続プールを使用し、同じホストへの新しい接続を作成しません。したがって、2つのページは同じ開かれたソケットを共有します。

関連する問題