Fast & Friendly, Web Framework For Building Async APIs
Project description
Panther
Is A Fast & Friendly, Web Framework For Building Async APIs With Python 3.11+
Full Documentation -> https://pantherpy.github.io
Features
- Document-oriented Databases ORM (SlarkDB, MongoDB)
- Visual API Monitoring (In Terminal)
- Cache APIs (In Memory, In Redis)
- Built-in Authentication Classes (Customizable)
- Built-in Permission Classes (Customizable)
- Handle Custom Middlewares
Benchmark
We implemented most of the Python frameworks and sent
25,000
requests per second
for 10
seconds
(Total 250,000
requests)
in the same environment
with https://github.com/nakabonne/ali and here's the result:
you can find the detailed results & source codes here --> benchmarks
Framework | Throughput | Request Handled | Max Latencies |
---|---|---|---|
Sanic | 23,326 | 233,842 | 268.8ms |
Panther | 14,719 | 147,595 | 113.1ms |
FastAPI | 14,573 | 146,467 | 155.1ms |
Tornado | 4,969 | 50.585 | 426.5ms |
Flask | 3,555 | 36,396 | 1.2s |
Django | 2,188 | 22,814 | 526.3ms |
Bottle | 1,226 | 39,650 | 30.0s |
Pyramid | 1,023 | 30,912 | 30.0s |
Cherrypy | 639 | 24,944 | 30.0s |
Installation
-
Create a Virtual Environment
$ python -m venv .venv
-
Active The Environment
* Linux & Mac$ source .venv/bin/activate
* Windows$ .\.venv\Scripts\activate
-
Install Panther
* Normal$ pip install panther
* Include JWT Authentication$ pip install panther[full]
Usage
-
Create Project
$ panther create <project_name> <directory>
-
Run Project
Panther needs Uvicorn as ASGI (Asynchronous Server Gateway Interface)
$ pip install uvicorn[standard]
Then
$ panther run
-
Monitoring Requests
$ panther monitor
-
Python Shell
$ panther shell
Example
-
You can create project with
$ panther create myproject
-
or create it yourself:
core/configs.py:
URLs = 'core/urls.py'
core/urls.py:
from app.urls import urls as app_urls urls = { '/': app_urls, }
app/urls.py:
from app.apis import hello_world, info urls = { '': hello_world, 'info/': info, }
app/apis.py:
from panther import version, status from panther.app import API from panther.request import Request from panther.response import Response @API() async def hello_world(): return {'detail': 'Hello World'} @API() async def info(request: Request): data = { 'version': version(), 'user_agent': request.headers.user_agent, 'content_length': request.headers.content_length, } return Response(data=data, status_code=status.HTTP_202_ACCEPTED)
-
Then run (
$ panther run
) the project, now you can see these two urls:
More examples: https://github.com/AliRn76/panther/tree/master/example.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file panther-1.2.7.tar.gz
.
File metadata
- Download URL: panther-1.2.7.tar.gz
- Upload date:
- Size: 27.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
04d4c44e5d2c0b62361766dc8634633b29bf82ba20ebd21f2e31206306a25528
|
|
MD5 |
a1e4ad325babebef47ee84c69ec7e91d
|
|
BLAKE2b-256 |
dfbb8a42d131501e0e9477acc6fd54484c6382e9bce8437dbfa0cac06bf4c7f5
|
File details
Details for the file panther-1.2.7-py3-none-any.whl
.
File metadata
- Download URL: panther-1.2.7-py3-none-any.whl
- Upload date:
- Size: 33.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
c002d7df407d05b3d6439c0466eb019be855633c4ca44e5825ea581a66c0e97a
|
|
MD5 |
938438b55f4e390bc6b69b288fde3267
|
|
BLAKE2b-256 |
46765667b4d92d9040dc6eeeade0d248e5a7680d9b5fedfbe53618901e372dd6
|