Python 18.4 aiohttp
生活随笔
收集整理的這篇文章主要介紹了
Python 18.4 aiohttp
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
aiohttp
asyncio可以實(shí)現(xiàn)單線程并發(fā)IO操作。如果僅用在客戶端,發(fā)揮的威力不大。如果把asyncio用在服務(wù)器端,例如Web服務(wù)器,由于HTTP連接就是IO操作,因此可以用單線程+coroutine實(shí)現(xiàn)多用戶的高并發(fā)支持。
asyncio實(shí)現(xiàn)了TCP、UDP、SSL等協(xié)議,aiohttp則是基于asyncio實(shí)現(xiàn)的HTTP框架。
我們先安裝aiohttp:
pip?install?aiohttp然后編寫一個(gè)HTTP服務(wù)器,分別處理以下URL:
/ - 首頁(yè)返回b'<h1>Index</h1>';
/hello/{name} - 根據(jù)URL參數(shù)返回文本hello, %s!。
代碼如下:
import?asyncio from?aiohttp?import?webasync?def?index(request):await?asyncio.sleep(0.5)????return?web.Response(body=b'<h1>Index</h1>')async?def?hello(request):await?asyncio.sleep(0.5)text?=?'<h1>hello,?%s!</h1>'?%?request.match_info['name']????return?web.Response(body=text.encode('utf-8'))async?def?init(loop):app?=?web.Application(loop=loop)app.router.add_route('GET',?'/',?index)app.router.add_route('GET',?'/hello/{name}',?hello)srv?=?await?loop.create_server(app.make_handler(),?'127.0.0.1',?8000)print('Server?started?at?http://127.0.0.1:8000...')????return?srvloop?=?asyncio.get_event_loop() loop.run_until_complete(init(loop)) loop.run_forever()注意aiohttp的初始化函數(shù)init()也是一個(gè)coroutine,loop.create_server()則利用asyncio創(chuàng)建TCP服務(wù)。
轉(zhuǎn)載于:https://blog.51cto.com/9130745/1743008
總結(jié)
以上是生活随笔為你收集整理的Python 18.4 aiohttp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【02】把 Elasticsearch
- 下一篇: 【Breadth-first Searc