vibora

by vibora-io

vibora-io /vibora

Fast, asynchronous and elegant Python web framework.

5.6K Stars 316 Forks Last release: Not found MIT License 141 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Warning: This project is being completely re-written. If you're curious about the progress, reach me on Slack.

License: MIT PyPI Code style: black Join Slack


Vibora is a fast, asynchronous and elegant Python 3.6+ http client/server framework. (Alpha stage)

Before you ask, Vibora means Viper in Portuguese :)

Server Features

  • Performance (https://github.com/vibora-io/benchmarks).
  • Schemas Engine.
  • Nested Blueprints / Domain Based Routes / Components
  • Connection Reaper / Self-Healing Workers
  • Sessions Engine
  • Streaming
  • Websockets
  • Caching tools
  • Async Template Engine (hot-reloading, deep inheritance)
  • Complete flow customization
  • Static Files (Smart Cache, Range, LastModified, ETags)
  • Testing Framework
  • Type hints, type hints, type hints everywhere.

Client Features

  • Streaming MultipartForms (Inspired by: https://github.com/requests/requests/issues/1584)
  • Rate Limiting / Retries mechanisms
  • Websockets
  • Keep-Alive & Connection Pooling
  • Sessions with cookies persistence
  • Basic/digest Authentication
  • Transparent Content Decoding

Server Example

from vibora import Vibora, Request
from vibora.responses import JsonResponse

app = Vibora()

@app.route('/') async def home(request: Request): return JsonResponse({'hello': 'world'})

if name == 'main': app.run(debug=True, host='0.0.0.0', port=8000)

Client Example

import asyncio
from vibora import client


async def hello_world(): response = await client.get('https://google.com/') print(f'Content: {response.content}') print(f'Status code: {response.status_code}')

if name == 'main': loop = asyncio.get_event_loop() loop.run_until_complete(hello_world())

Documentation

Check it out at Vibora docs website.

Performance (Infamous Hello World benchmark)

| Frameworks | Requests/Sec | Version | | ------------- |:-------------:|:--------:| | Tornado | 14,197 | 5.0.2 | | Django | 22,823 | 2.0.6 | | Flask | 37,487 | 1.0.2 | | Aiohttp | 61,252 | 3.3.2 | | Sanic | 119,764 | 0.7.0 | | Vibora | 368,456 | 0.0.6 |

More benchmarks and info at https://github.com/vibora-io/benchmarks

Goals

  • Be the fastest Python http client/server framework..
  • Windows / Linux / MacOS.
  • Enjoyable and up to date development features/trends.

Coming Soon

  • Auto Reloading
  • HTTP2 Support
  • Brotli support (Server/Client)
  • Cython compiled templates.
  • Cython compiled user-routes.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.