import logging; logging.basicConfig(level=logging.INFO)
import asyncio, os, json, time
from datetime import datetime
from aiohttp import web
def index(request):
logging.info('server response...')
return web.Response(body=b'<h1>Awesome</h1>')
async def init(loop):
app = web.Application(loop=loop)
app.router.add_route('GET', '/', index)
logging.info('server before...')
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()
我觉得运行的日志:
INFO:root:server before...
INFO:root:server response...
INFO:root:server started at http://127.0.0.1:9000...
结果正确的日志是:
INFO:root:server before...
INFO:root:server started at http://127.0.0.1:9000...
INFO:root:server response...
在我的理解里, python 执行到 await 应该暂停执行函数, TCP 协程结束后,才执行 server started at...这条日志。怎么函数一下子全部执行完了。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.