Accelerate your web app development | Build fast. Run fast.
Go to file
7 baa689ad43 Fix failed build and add websockets version specifier (#1239)
* add websockets version constraint

* fix failed build
2018-06-07 10:07:26 -07:00
docker Install Python 3.5 and 3.6 on docker container 2018-01-24 16:46:45 +03:30
docs Update extensions.md (#1205) 2018-04-29 18:41:17 -07:00
examples rename function to something else 2018-03-29 15:57:10 -07:00
sanic Fixed #1231 - release resource no matter what (#1232) 2018-06-06 14:43:57 -07:00
tests Some of the tests in Sanic (test_request_timout, test_response_timeout, test_keep_alive_timeout) use a custom SanicClient with modified methods. This relies on overriding internal aiohttp Client classes. 2018-03-29 11:54:59 +10:00
.coveragerc add coverage to tox 2017-02-15 15:20:43 -08:00
.gitattributes Introduce end-of-line normalization 2016-10-15 12:59:00 -07:00
.gitignore fixed small doc issue (#877) 2017-08-02 10:15:18 -07:00
.travis.yml migrate to trusty 2018-03-15 21:39:21 -07:00
CHANGELOG.md Reverse static arguments 2016-10-25 02:45:28 -07:00
CONDUCT.md Add maintainers email address 2017-05-22 15:31:05 -07:00
CONTRIBUTING.md Add Code of Conduct 2017-05-19 23:09:44 +08:00
environment.yml Add sphinxcontrib-asyncio to environment.yml 2017-12-19 22:55:50 -06:00
LICENSE Fix LICENSE date and name 2017-08-30 15:30:22 +02:00
Makefile Install Python 3.5 and 3.6 on docker container 2018-01-24 16:46:45 +03:30
MANIFEST.in include LICENSE file in manifest 2017-10-17 16:05:24 +02:00
README.rst Typo in readme? 2018-01-22 15:55:29 +11:00
readthedocs.yml Adding readthedocs file 2017-01-29 16:40:36 -08:00
requirements-dev.txt Some of the tests in Sanic (test_request_timout, test_response_timeout, test_keep_alive_timeout) use a custom SanicClient with modified methods. This relies on overriding internal aiohttp Client classes. 2018-03-29 11:54:59 +10:00
requirements-docs.txt add sphinx extension to add asyncio-specific markups 2017-09-30 01:16:26 +08:00
requirements.txt Fix failed build and add websockets version specifier (#1239) 2018-06-07 10:07:26 -07:00
setup.py Fix failed build and add websockets version specifier (#1239) 2018-06-07 10:07:26 -07:00
tox.ini Fix failed build and add websockets version specifier (#1239) 2018-06-07 10:07:26 -07:00

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 <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.

Sanic is developed `on GitHub <https://github.com/channelcat/sanic/>`_. Contributions are welcome!

If you have a project that utilizes Sanic make sure to comment on the `issue <https://github.com/channelcat/sanic/issues/396>`_ that we use to track those projects!

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
------------

-  ``pip install sanic``

To install sanic without uvloop or ujson using bash, you can provide either or both of these environmental variables
using any truthy string like `'y', 'yes', 't', 'true', 'on', '1'` and setting the NO_X to true will stop that features
installation.

- ``SANIC_NO_UVLOOP=true SANIC_NO_UJSON=true pip install sanic``


Documentation
-------------

`Documentation on Readthedocs <http://sanic.readthedocs.io/>`_.

.. |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
.. |Documentation| image:: https://readthedocs.org/projects/sanic/badge/?version=latest
   :target: http://sanic.readthedocs.io/en/latest/?badge=latest
.. |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/
   

Examples
--------
`Non-Core examples <https://github.com/channelcat/sanic/wiki/Examples/>`_. Examples of plugins and Sanic that are outside the scope of Sanic core.

`Extensions <https://github.com/channelcat/sanic/wiki/Extensions/>`_. Sanic extensions created by the community.

`Projects <https://github.com/channelcat/sanic/wiki/Projects/>`_. Sanic in production use.


TODO
----
 * http2

Limitations
-----------
* No wheels for uvloop and httptools on Windows :(

Final Thoughts
--------------

::

                     ▄▄▄▄▄
            ▀▀▀██████▄▄▄       _______________
          ▄▄▄▄▄  █████████▄  /                 \
         ▀▀▀▀█████▌ ▀▐▄ ▀▐█ |   Gotta go fast!  |
       ▀▀█████▄▄ ▀██████▄██ | _________________/
       ▀▄▄▄▄▄  ▀▀█▄▀█════█▀ |/
            ▀▀▀▄  ▀▀███ ▀       ▄▄
         ▄███▀▀██▄████████▄ ▄▀▀▀▀▀▀█▌
       ██▀▄▄▄██▀▄███▀ ▀▀████      ▄██
    ▄▀▀▀▄██▄▀▀▌████▒▒▒▒▒▒███     ▌▄▄▀
    ▌    ▐▀████▐███▒▒▒▒▒▐██▌
    ▀▄▄▄▄▀   ▀▀████▒▒▒▒▄██▀
              ▀▀█████████▀
            ▄▄██▀██████▀█
          ▄██▀     ▀▀▀  █
         ▄█             ▐▌
     ▄▄▄▄█▌              ▀█▄▄▄▄▀▀▄
    ▌     ▐                ▀▀▄▄▄▀
     ▀▀▄▄▀