Skip to content
This repository has been archived by the owner on Oct 8, 2023. It is now read-only.
/ vibora Public archive

Fast, asynchronous and elegant Python web framework.

License

Notifications You must be signed in to change notification settings

vibora-io/vibora

Repository files navigation

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


Viborais afast, asynchronous and elegantPython 3.6+ http client/server framework. (Alpha stage)

Before you ask, Vibora means Viper in Portuguese:)

Server Features

  • Performance (https://github /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:psf/requests#1584)
  • Rate Limiting / Retries mechanisms
  • Websockets
  • Keep-Alive & Connection Pooling
  • Sessions with cookies persistence
  • Basic/digest Authentication
  • Transparent Content Decoding

Server Example

fromviboraimportVibora,Request
fromvibora.responsesimportJsonResponse

app=Vibora()


@app.route('/')
asyncdefhome(request:Request):
returnJsonResponse({'hello':'world'})


if__name__=='__main__':
app.run(debug=True,host='0.0.0.0',port=8000)

Client Example

importasyncio
fromviboraimportclient


asyncdefhello_world():
response=awaitclient.get('https://google /')
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 athttps://github /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.