tornado README

The project's README from github.com/tornadoweb/tornado. As one markdown file: README.md.

.. image:: docs/tornado.png?raw=true :alt: Tornado Web :align: center

Tornado Web Server

Tornado <http://www.tornadoweb.org>_ is a Python web framework and asynchronous networking library, originally developed at FriendFeed <http://friendfeed.com>. By using non-blocking network I/O, Tornado can scale to tens of thousands of open connections, making it ideal for long polling <http://en.wikipedia.org/wiki/Push_technology#Long_Polling>, WebSockets <http://en.wikipedia.org/wiki/WebSocket>_, and other applications that require a long-lived connection to each user.

Hello, world

Here is a simple "Hello, world" example web app for Tornado:

.. code-block:: python

import asyncio
import tornado

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

async def main():
    app = make_app()
    app.listen(8888)
    await asyncio.Event().wait()

if __name__ == "__main__":
    asyncio.run(main())

This example does not use any of Tornado's asynchronous features; for that see this simple chat room <https://github.com/tornadoweb/tornado/tree/stable/demos/chat>_.

Documentation

Documentation and links to additional resources are available at https://www.tornadoweb.org

tornado (tornadoweb/tornado)

Searching Database…

22.2K ·GitHub
Что это такое?Tornado — это веб-фреймворк для Python и библиотека асинхронных сетевых возможностей, изначально разработанная в FriendFeed. Благодаря неблокируемому сетевому вводу-выводу он масштабируется до десятков тысяч открытых соединений.
Он сам обрабатывает запросы или его нужно ставить за отдельным веб-сервером?Он сам обслуживает трафик — в README он назван Tornado Web Server, а пример приложения просто вызывает app.listen(8888). Отдельный веб-сервер нигде не упоминается.
Как запустить минимальное приложение?Создайте наследника tornado.web.RequestHandler с методом get(), передайте свои обработчики в tornado.web.Application, вызовите app.listen(8888) внутри асинхронной main() и запустите всё через asyncio.run(main()).
Он работает на встроенном в Python asyncio или тащит свой собственный цикл событий?Он работает на встроенном в Python asyncio: пример приложения начинает слушать, затем ждёт на asyncio.Event().wait() внутри main(), запущенной через asyncio.run(main()). Другие зависимости не упоминаются.
Мне обязательно писать весь код в асинхронном стиле, чтобы им пользоваться?Не обязательно. В README отмечено, что пример Hello, world не использует вообще никаких асинхронных возможностей Tornado; асинхронность разбирается отдельно на простом примере чата.
Для каких приложений он предназначен?Для приложений, где каждый пользователь остаётся на связи: в README сказано, что он идеально подходит для long polling, WebSockets и других задач, где требуется долгоживущее соединение с каждым пользователем.
Откуда взялся Tornado?Изначально он был разработан в FriendFeed; репозиторий на GitHub существует с сентября 2009 года.
Проект ещё жив?Судя по метаданным, да: репозиторий не архивирован, у него около 22 000 звёзд, и через GitHub Actions запускаются процессы сборки и тестирования.
Creator
tornadoweb
Size
11.8 MB
Stars
22.2K
Updated
CommitOct 16
Age
17y
Commits · 90 Days