новичок в Торнадо и пытается понять основы. учитывая их образец приложения :
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
Я понимаю, что объект приложения имеет значения конфигурации и RequestHandlers (в основном поведение приложения), и я также понимаю, что IOLoop является своего рода оболочкой для модуля asyncio в python3. Глядя на , документация для asyncio показывает мне этот пример:
import asyncio
import time
async def say_after(delay, what):
await asyncio.sleep(delay)
print(what)
async def main():
print(f"started at {time.strftime('%X')}")
await say_after(1, 'hello')
await say_after(2, 'world')
print(f"finished at {time.strftime('%X')}")
asyncio.run(main())
Здесь asyncio
явно сказано, чтобы он выполнял функцию main()
, тогда как в примере с торнадо я не вижу, где указан цикл обработки событий для запуска Application obj. Как эти два связаны?
был здесь и здесь уже
ти!