2021-01-07 06:24:11 +00:00
.. image :: https://raw.githubusercontent.com/sanic-org/sanic-assets/master/png/sanic-framework-logo-400x97.png
2018-12-30 09:40:48 +00:00
:alt: Sanic | Build fast. Run fast.
Sanic | Build fast. Run fast.
=============================
2017-01-09 22:28:33 +00:00
2018-12-04 07:03:14 +00:00
.. start-badges
.. list-table ::
2021-03-01 21:08:11 +00:00
:widths: 15 85
2018-12-04 07:03:14 +00:00
:stub-columns: 1
* - Build
2021-05-31 20:10:15 +01:00
- | |Py39Test| |Py38Test| |Py37Test| |Codecov|
2018-12-04 07:03:14 +00:00
* - Docs
2021-03-04 12:12:40 +00:00
- | |UserGuide| |Documentation|
2018-12-04 07:03:14 +00:00
* - Package
- | |PyPI| |PyPI version| |Wheel| |Supported implementations| |Code style black|
* - Support
2021-02-23 10:07:30 +00:00
- | |Forums| |Discord| |Awesome|
2019-04-23 22:44:42 +01:00
* - Stats
2021-01-07 06:25:36 +00:00
- | |Downloads| |WkDownloads| |Conda downloads|
2018-12-04 07:03:14 +00:00
2021-03-04 12:12:24 +00:00
.. |UserGuide| image :: https://img.shields.io/badge/user%20guide-sanic-ff0068
:target: https://sanicframework.org/
2018-12-30 09:40:48 +00:00
.. |Forums| image :: https://img.shields.io/badge/forums-community-ff0068.svg
:target: https://community.sanicframework.org/
2021-02-23 10:07:30 +00:00
.. |Discord| image :: https://img.shields.io/discord/812221182594121728?logo=discord
2021-02-24 07:52:47 +00:00
:target: https://discord.gg/FARQzAEMAA
2021-01-07 06:24:11 +00:00
.. |Codecov| image :: https://codecov.io/gh/sanic-org/sanic/branch/master/graph/badge.svg
:target: https://codecov.io/gh/sanic-org/sanic
2021-05-31 20:10:15 +01:00
.. |Py39Test| image :: https://github.com/sanic-org/sanic/actions/workflows/pr-python39.yml/badge.svg?branch=main
2021-05-31 19:56:51 +01:00
:target: https://github.com/sanic-org/sanic/actions/workflows/pr-python39.yml
2021-05-31 20:10:15 +01:00
.. |Py38Test| image :: https://github.com/sanic-org/sanic/actions/workflows/pr-python38.yml/badge.svg?branch=main
:target: https://github.com/sanic-org/sanic/actions/workflows/pr-python38.yml
.. |Py37Test| image :: https://github.com/sanic-org/sanic/actions/workflows/pr-python37.yml/badge.svg?branch=main
:target: https://github.com/sanic-org/sanic/actions/workflows/pr-python37.yml
2018-12-04 07:03:14 +00:00
.. |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/
.. |Code style black| image :: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/ambv/black
.. |Wheel| image :: https://img.shields.io/pypi/wheel/sanic.svg
:alt: PyPI Wheel
:target: https://pypi.python.org/pypi/sanic
.. |Supported implementations| image :: https://img.shields.io/pypi/implementation/sanic.svg
:alt: Supported implementations
:target: https://pypi.python.org/pypi/sanic
2019-05-06 13:47:16 +01:00
.. |Awesome| image :: https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg
:alt: Awesome Sanic List
:target: https://github.com/mekicha/awesome-sanic
2019-04-23 22:44:42 +01:00
.. |Downloads| image :: https://pepy.tech/badge/sanic/month
:alt: Downloads
:target: https://pepy.tech/project/sanic
2021-01-07 06:25:36 +00:00
.. |WkDownloads| image :: https://pepy.tech/badge/sanic/week
2021-01-07 06:24:11 +00:00
:alt: Downloads
:target: https://pepy.tech/project/sanic
2019-05-15 07:54:02 +01:00
.. |Conda downloads| image :: https://img.shields.io/conda/dn/conda-forge/sanic.svg
:alt: Downloads
:target: https://anaconda.org/conda-forge/sanic
2018-12-04 07:03:14 +00:00
.. end-badges
2017-01-09 22:28:33 +00:00
2021-02-28 23:03:42 +00:00
Sanic is a **Python 3.7+** web server and web framework that's written to go fast. It allows the usage of the `` async/await `` syntax added in Python 3.5, which makes your code non-blocking and speedy.
2017-01-09 22:28:33 +00:00
2020-09-02 21:22:02 +01:00
Sanic is also ASGI compliant, so you can deploy it with an `alternative ASGI webserver <https://sanic.readthedocs.io/en/latest/sanic/deploying.html#running-via-asgi> `_ .
2021-03-21 08:43:18 +00:00
`Source code on GitHub <https://github.com/sanic-org/sanic/> `_ | `Help and discussion board <https://community.sanicframework.org/> `_ | `User Guide <https://sanicframework.org> `_ | `Chat on Discord <https://discord.gg/FARQzAEMAA> `_
2017-01-09 22:28:33 +00:00
2019-05-18 20:05:03 +01:00
The project is maintained by the community, for the community. **Contributions are welcome!**
2017-01-09 22:28:33 +00:00
2018-12-30 09:40:48 +00:00
The goal of the project is to provide a simple way to get up and running a highly performant HTTP server that is easy to build, to expand, and ultimately to scale.
2017-04-26 05:50:49 +01:00
2021-02-23 20:05:53 +00:00
Sponsor
-------
|Try CodeStream|
.. |Try CodeStream| image :: https://alt-images.codestream.com/codestream_logo_sanicorg.png
:target: https://codestream.com/?utm_source=github&utm_campaign=sanicorg&utm_medium=banner
:alt: Try CodeStream
2021-03-01 21:08:11 +00:00
2021-02-23 20:05:53 +00:00
Manage pull requests and conduct code reviews in your IDE with full source-tree context. Comment on any line, not just the diffs. Use jump-to-definition, your favorite keybindings, and code intelligence with more of your workflow.
2021-02-24 07:50:21 +00:00
`Learn More <https://codestream.com/?utm_source=github&utm_campaign=sanicorg&utm_medium=banner> `_
2021-02-23 20:05:53 +00:00
Thank you to our sponsor. Check out `open collective <https://opencollective.com/sanic-org> `_ to learn more about helping to fund Sanic.
2018-12-22 05:22:12 +00:00
Installation
------------
2018-12-30 09:40:48 +00:00
`` pip3 install sanic ``
2018-12-22 05:22:12 +00:00
2018-12-30 09:40:48 +00:00
Sanic makes use of `` uvloop `` and `` ujson `` to help with performance. If you do not want to use those packages, simply add an environmental variable `` SANIC_NO_UVLOOP=true `` or `` SANIC_NO_UJSON=true `` at install time.
2021-01-07 06:24:11 +00:00
2018-12-31 10:30:34 +00:00
.. code :: shell
2021-01-07 06:24:11 +00:00
2018-12-31 10:30:34 +00:00
$ export SANIC_NO_UVLOOP=true
2021-01-07 06:24:11 +00:00
$ export SANIC_NO_UJSON=true
2019-04-17 14:48:21 +01:00
$ pip3 install --no-binary :all: sanic
2018-12-22 05:22:12 +00:00
2019-05-20 02:16:18 +01:00
.. note ::
If you are running on a clean install of Fedora 28 or above, please make sure you have the `` redhat-rpm-config `` package installed in case if you want to
use `` sanic `` with `` ujson `` dependency.
2020-02-03 16:27:56 +00:00
.. note ::
2021-01-07 06:24:11 +00:00
Windows support is currently "experimental" and on a best-effort basis. Multiple workers are also not currently supported on Windows (see `Issue #1517 <https://github.com/sanic-org/sanic/issues/1517> `_ ), but setting `` workers=1 `` should launch the server successfully.
2019-05-20 02:16:18 +01:00
2017-01-09 22:28:33 +00:00
Hello World Example
-------------------
.. code :: python
from sanic import Sanic
from sanic.response import json
2021-03-12 13:23:13 +00:00
app = Sanic("My Hello, world app")
2017-01-09 22:28:33 +00:00
2018-01-15 06:55:36 +00:00
@app.route('/')
2017-01-09 22:28:33 +00:00
async def test(request):
2018-01-15 06:55:36 +00:00
return json({'hello': 'world'})
2017-01-09 22:28:33 +00:00
2018-01-15 06:55:36 +00:00
if __name__ == '__main__':
2021-03-21 08:43:18 +00:00
app.run()
2021-01-07 06:24:11 +00:00
2020-08-27 08:28:56 +01:00
Sanic can now be easily run using `` sanic hello.app `` .
2018-12-30 09:40:48 +00:00
.. code ::
2021-03-21 08:43:18 +00:00
[2018-12-30 11:37:41 +0200] [13564] [INFO] Goin' Fast @ http://127.0.0.1:8000
2018-12-30 09:40:48 +00:00
[2018-12-30 11:37:41 +0200] [13564] [INFO] Starting worker [13564]
And, we can verify it is working: `` curl localhost:8000 -i ``
.. code ::
HTTP/1.1 200 OK
Connection: keep-alive
Keep-Alive: 5
Content-Length: 17
Content-Type: application/json
{"hello":"world"}
2021-01-07 06:24:11 +00:00
2018-12-30 09:40:48 +00:00
**Now, let's go build something fast!**
2017-01-09 22:28:33 +00:00
2021-02-21 21:28:28 +00:00
Minimum Python version is 3.7. If you need Python 3.6 support, please use v20.12LTS.
2017-03-29 10:12:24 +01:00
2017-01-09 22:28:33 +00:00
Documentation
-------------
2021-03-21 08:43:18 +00:00
`User Guide <https://sanicframework.org> `__ and `API Documentation <http://sanic.readthedocs.io/> `__ .
2017-01-09 22:28:33 +00:00
2019-01-06 21:50:40 +00:00
Changelog
---------
2021-03-21 08:43:18 +00:00
`Release Changelogs <https://github.com/sanic-org/sanic/blob/master/CHANGELOG.rst> `__ .
2021-01-07 06:24:11 +00:00
2019-01-06 21:50:40 +00:00
2018-10-04 10:31:57 +01:00
Questions and Discussion
------------------------
2021-03-21 08:43:18 +00:00
`Ask a question or join the conversation <https://community.sanicframework.org/> `__ .
2018-10-04 10:31:57 +01:00
2018-12-30 09:40:48 +00:00
Contribution
------------
2017-08-01 09:32:15 +01:00
2021-03-10 16:14:48 +00:00
We are always happy to have new contributions. We have `marked issues good for anyone looking to get started <https://github.com/sanic-org/sanic/issues?q=is%3Aopen+is%3Aissue+label%3Abeginner> `_ , and welcome `questions on the forums <https://community.sanicframework.org/> `_ . Please take a look at our `Contribution guidelines <https://github.com/sanic-org/sanic/blob/master/CONTRIBUTING.rst> `_ .