From 34d1e5e67ed9b302c4d4824ea09f948a02ead69e Mon Sep 17 00:00:00 2001 From: Cadel Watson Date: Tue, 10 Jan 2017 09:28:33 +1100 Subject: [PATCH] Convert README to RestructuredText and include it in the documentation index. --- README.md | 96 -------------------------------------------------- README.rst | 76 +++++++++++++++++++++++++++++++++++++++ docs/index.rst | 61 +------------------------------- 3 files changed, 77 insertions(+), 156 deletions(-) delete mode 100644 README.md create mode 100644 README.rst diff --git a/README.md b/README.md deleted file mode 100644 index e417b4a1..00000000 --- a/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# Sanic - -[![Join the chat at https://gitter.im/sanic-python/Lobby](https://badges.gitter.im/sanic-python/Lobby.svg)](https://gitter.im/sanic-python/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - -[![Build Status](https://travis-ci.org/channelcat/sanic.svg?branch=master)](https://travis-ci.org/channelcat/sanic) -[![PyPI](https://img.shields.io/pypi/v/sanic.svg)](https://pypi.python.org/pypi/sanic/) -[![PyPI](https://img.shields.io/pypi/pyversions/sanic.svg)](https://pypi.python.org/pypi/sanic/) - -Sanic is a Flask-like Python 3.5+ web server that's written to go fast. It's based on the work done by the amazing folks at magicstack, and was inspired by this article: https://magic.io/blog/uvloop-blazing-fast-python-networking/. - -On top of being Flask-like, Sanic supports async request handlers. This means you can use the new shiny async/await syntax from Python 3.5, making your code non-blocking and speedy. - -## Benchmarks - -All tests were run on an AWS medium instance running ubuntu, using 1 process. Each script delivered a small JSON response and was tested with wrk using 100 connections. Pypy was tested for Falcon and Flask but did not speed up requests. - - - -| Server | Implementation | Requests/sec | Avg Latency | -| ------- | ------------------- | ------------:| -----------:| -| Sanic | Python 3.5 + uvloop | 33,342 | 2.96ms | -| Wheezy | gunicorn + meinheld | 20,244 | 4.94ms | -| Falcon | gunicorn + meinheld | 18,972 | 5.27ms | -| Bottle | gunicorn + meinheld | 13,596 | 7.36ms | -| Flask | gunicorn + meinheld | 4,988 | 20.08ms | -| Kyoukai | Python 3.5 + uvloop | 3,889 | 27.44ms | -| Aiohttp | Python 3.5 + uvloop | 2,979 | 33.42ms | -| Tornado | Python 3.5 | 2,138 | 46.66ms | - -## Hello World - -```python -from sanic import Sanic -from sanic.response import json - - -app = Sanic() - - -@app.route("/") -async def test(request): - return json({"hello": "world"}) - -if __name__ == "__main__": - app.run(host="0.0.0.0", port=8000) - -``` - -## Installation - * `python -m pip install sanic` - -## Documentation - * [Getting started](docs/getting_started.md) - * [Request Data](docs/request_data.md) - * [Routing](docs/routing.md) - * [Middleware](docs/middleware.md) - * [Exceptions](docs/exceptions.md) - * [Blueprints](docs/blueprints.md) - * [Class Based Views](docs/class_based_views.md) - * [Cookies](docs/cookies.md) - * [Static Files](docs/static_files.md) - * [Testing](docs/testing.md) - * [Deploying](docs/deploying.md) - * [Contributing](docs/contributing.md) - * [License](LICENSE) - -## TODO: - * Streamed file processing - * File output - * Examples of integrations with 3rd-party modules - * RESTful router - -## Limitations: - * No wheels for uvloop and httptools on Windows :( - -## Final Thoughts: - - ▄▄▄▄▄ - ▀▀▀██████▄▄▄ _______________ - ▄▄▄▄▄ █████████▄ / \ - ▀▀▀▀█████▌ ▀▐▄ ▀▐█ | Gotta go fast! | - ▀▀█████▄▄ ▀██████▄██ | _________________/ - ▀▄▄▄▄▄ ▀▀█▄▀█════█▀ |/ - ▀▀▀▄ ▀▀███ ▀ ▄▄ - ▄███▀▀██▄████████▄ ▄▀▀▀▀▀▀█▌ - ██▀▄▄▄██▀▄███▀ ▀▀████ ▄██ - ▄▀▀▀▄██▄▀▀▌████▒▒▒▒▒▒███ ▌▄▄▀ - ▌ ▐▀████▐███▒▒▒▒▒▐██▌ - ▀▄▄▄▄▀ ▀▀████▒▒▒▒▄██▀ - ▀▀█████████▀ - ▄▄██▀██████▀█ - ▄██▀ ▀▀▀ █ - ▄█ ▐▌ - ▄▄▄▄█▌ ▀█▄▄▄▄▀▀▄ - ▌ ▐ ▀▀▄▄▄▀ - ▀▀▄▄▀ diff --git a/README.rst b/README.rst new file mode 100644 index 00000000..eb04b6a5 --- /dev/null +++ b/README.rst @@ -0,0 +1,76 @@ +Sanic +================================= + +|Join the chat at https://gitter.im/sanic-python/Lobby| |Build Status| |PyPI| |PyPI version| + +Sanic is a Flask-like Python 3.5+ web server that's written to go fast. It's based on the work done by the amazing folks at magicstack, and was inspired by `this article `_. + +On top of being Flask-like, Sanic supports async request handlers. This means you can use the new shiny async/await syntax from Python 3.5, making your code non-blocking and speedy. + +Sanic is developed `on GitHub `_. Contributions are welcome! + +Benchmarks +---------- + +All tests were run on an AWS medium instance running ubuntu, using 1 +process. Each script delivered a small JSON response and was tested with +wrk using 100 connections. Pypy was tested for Falcon and Flask but did +not speed up requests. + ++-----------+-----------------------+----------------+---------------+ +| Server | Implementation | Requests/sec | Avg Latency | ++===========+=======================+================+===============+ +| Sanic | Python 3.5 + uvloop | 33,342 | 2.96ms | ++-----------+-----------------------+----------------+---------------+ +| Wheezy | gunicorn + meinheld | 20,244 | 4.94ms | ++-----------+-----------------------+----------------+---------------+ +| Falcon | gunicorn + meinheld | 18,972 | 5.27ms | ++-----------+-----------------------+----------------+---------------+ +| Bottle | gunicorn + meinheld | 13,596 | 7.36ms | ++-----------+-----------------------+----------------+---------------+ +| Flask | gunicorn + meinheld | 4,988 | 20.08ms | ++-----------+-----------------------+----------------+---------------+ +| Kyoukai | Python 3.5 + uvloop | 3,889 | 27.44ms | ++-----------+-----------------------+----------------+---------------+ +| Aiohttp | Python 3.5 + uvloop | 2,979 | 33.42ms | ++-----------+-----------------------+----------------+---------------+ +| Tornado | Python 3.5 | 2,138 | 46.66ms | ++-----------+-----------------------+----------------+---------------+ + +Hello World Example +------------------- + +.. code:: python + + from sanic import Sanic + from sanic.response import json + + + app = Sanic() + + + @app.route("/") + async def test(request): + return json({"hello": "world"}) + + if __name__ == "__main__": + app.run(host="0.0.0.0", port=8000) + +Installation +------------ + +- ``python -m pip install sanic`` + +Documentation +------------- + +Documentation can be found in the ``docs`` directory. + +.. |Join the chat at https://gitter.im/sanic-python/Lobby| image:: https://badges.gitter.im/sanic-python/Lobby.svg + :target: https://gitter.im/sanic-python/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge +.. |Build Status| image:: https://travis-ci.org/channelcat/sanic.svg?branch=master + :target: https://travis-ci.org/channelcat/sanic +.. |PyPI| image:: https://img.shields.io/pypi/v/sanic.svg + :target: https://pypi.python.org/pypi/sanic/ +.. |PyPI version| image:: https://img.shields.io/pypi/pyversions/sanic.svg + :target: https://pypi.python.org/pypi/sanic/ diff --git a/docs/index.rst b/docs/index.rst index 1e815582..264ebc93 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,63 +1,4 @@ -Welcome to Sanic's documentation! -================================= - -Sanic is a Flask-like Python 3.5+ web server that's written to go fast. It's based on the work done by the amazing folks at magicstack, and was inspired by `this article `_. - -On top of being Flask-like, Sanic supports async request handlers. This means you can use the new shiny async/await syntax from Python 3.5, making your code non-blocking and speedy. - -Sanic is developed `on GitHub `_. Contributions are welcome! - -Benchmarks ----------- - -All tests were run on an AWS medium instance running ubuntu, using 1 -process. Each script delivered a small JSON response and was tested with -wrk using 100 connections. Pypy was tested for Falcon and Flask but did -not speed up requests. - -+-----------+-----------------------+----------------+---------------+ -| Server | Implementation | Requests/sec | Avg Latency | -+===========+=======================+================+===============+ -| Sanic | Python 3.5 + uvloop | 33,342 | 2.96ms | -+-----------+-----------------------+----------------+---------------+ -| Wheezy | gunicorn + meinheld | 20,244 | 4.94ms | -+-----------+-----------------------+----------------+---------------+ -| Falcon | gunicorn + meinheld | 18,972 | 5.27ms | -+-----------+-----------------------+----------------+---------------+ -| Bottle | gunicorn + meinheld | 13,596 | 7.36ms | -+-----------+-----------------------+----------------+---------------+ -| Flask | gunicorn + meinheld | 4,988 | 20.08ms | -+-----------+-----------------------+----------------+---------------+ -| Kyoukai | Python 3.5 + uvloop | 3,889 | 27.44ms | -+-----------+-----------------------+----------------+---------------+ -| Aiohttp | Python 3.5 + uvloop | 2,979 | 33.42ms | -+-----------+-----------------------+----------------+---------------+ -| Tornado | Python 3.5 | 2,138 | 46.66ms | -+-----------+-----------------------+----------------+---------------+ - -Hello World Example -------------------- - -.. code:: python - - from sanic import Sanic - from sanic.response import json - - - app = Sanic() - - - @app.route("/") - async def test(request): - return json({"hello": "world"}) - - if __name__ == "__main__": - app.run(host="0.0.0.0", port=8000) - -Installation ------------- - -- ``python -m pip install sanic`` +.. include:: ../README.rst Guides ======