筆者新手.記錄學習,如有錯誤,歡迎指正,不勝感激.
源碼如下:
import logging; logging.basicConfig(level=logging.INFO)
import asyncio, os, json, time
from datetime import datetime
from aiohttp import web
async def index(request):
return web.Response(body=b'<h1> Awesome </h1>', content_type='text/html')
async def init(loop):
app = web.Application(loop=loop)
app.router.add_route('GET', '/', index)
srv = await loop.create_server(app.make_handler(), '127.0.0.1', 9000)
logging.info('server started at http://127.0.0.1:9000...')
return srv
loop = asyncio.get_event_loop()
loop.run_until_complete(init(loop))
loop.run_forever()
導入相應模塊
- 導入logging日志模塊.默認情況下昧谊,logging將日志打印到屏幕,日志級別為WARNING.日志級別大小關系為:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,當然也可以自己定義日志級別. 這里設置為INFO級別 這篇文章詳細講解了logging模塊
編寫index
-
asyncio官方文檔告訴我們,
In order to implement a web server, first create a requesr handler. A request handler is a coroutine or regular function that accepts a Request instance as its only parameter and returns a Response instance:
于是創(chuàng)建index函數(shù),唯一的一個參數(shù)為request, 當接收到request的時候就會返回一個response,response中寫html代碼. 這個函數(shù)的需要在配置app的router的時候傳入.
編寫init
需要在一個loop中不斷的監(jiān)聽請求并且做相應的響應操作,
在 init 方法中 初始化web app服務器.
配置router. handler通過將他們與一個特定的路線上設置的application.router處理請求(HTTP方法和路徑對).
創(chuàng)建一個server. 傳入handler, ip 以及端口.
End
- 創(chuàng)建事件, 運行, 保持服務器不關閉