Skip to main content

A simple asynchronous Python web framework built on aiohttp.

Project description

Mokei

Mokei is a simple asynchronous Python web framework built on aiohttp.

Aiohttp contains a great async web server, with web framework built in, but can be complex when compared to other web frameworks.

Mokei makes setting up your routes as simple as using Flask or FastAPI. It also includes super easy websocket routes with support for text and binary messages, as well as SocketIO-style event handlers.

Quick Start

from mokei import Mokei

app = Mokei()

@app.get('/')
async def hello():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run()

Return JSON data

When the return type from the handler is a dict, the response is automatically converted to application/json

@app.get('/status')
async def status():
    return {
        'status': 'OK',
    }

Adding Websocket support

Adding a websocket route is as simple as adding a normal get route.

Note that you may send websocket messages to a route or to a single websocket (compare websocket.send_text and data.send_text below)

app = Mokei()
data = app.websocketroute('/data')

@data.onconnect
async def send_welcome_text(websocket):
    await websocket.send_text('Welcome!')

@data.ontext
async def relay_text(websocket, text):
    # log incoming text and relay to all other websockets
    logger.info('Received text %s', text)
    await data.send_text(text, exclude=websocket)

SocketIO-style events are also supported. See js/mokei.js for a Javascript handler for Mokei WebSockets.

app = Mokei()
data = app.websocketroute('/data')

@data.on('ping')
async def send_pong(websocket, data):
    update_something(websocket)
    await websocket.send_event('pong', {'timestamp': time.time()})

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mokei-0.2.19.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mokei-0.2.19-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file mokei-0.2.19.tar.gz.

File metadata

  • Download URL: mokei-0.2.19.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for mokei-0.2.19.tar.gz
Algorithm Hash digest
SHA256 26b9405dd63a14ac1b49fb81d63fd7ac45ac63b63aa56c20048e9f4f04356390
MD5 d15ae351a5880bb7d408aac7f93e8353
BLAKE2b-256 4622d2d29343532ec0b1e83c50bce092c5c9d230157f71b9f42e9ed496c747fd

See more details on using hashes here.

File details

Details for the file mokei-0.2.19-py3-none-any.whl.

File metadata

  • Download URL: mokei-0.2.19-py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for mokei-0.2.19-py3-none-any.whl
Algorithm Hash digest
SHA256 36dee4e3db585792f91e862d4537569b3efc477b07530a1c295a8227ddb012ee
MD5 b72b0566b6a4d98547a53836e7fa9377
BLAKE2b-256 0ecc926f2b9f978d6e54e47f152a8b77e89ff1d69e4ed9cfca0d9f6acf10d038

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page