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.7.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

mokei-0.2.7-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for mokei-0.2.7.tar.gz
Algorithm Hash digest
SHA256 5f0d88d6b08c9a274701460ce7f16c0b52cb54e9dbb05971c20b7f0ca18199b8
MD5 5385b2fbd4e35d359a51b7fa6f3c9e6b
BLAKE2b-256 c2c25c0363bbdebaa0c2d1a65a409e701cba722288e31e623105ea476d97e197

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for mokei-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 72df3920e7a1b815c1745d0380e03fe613921581b6d60f9aacef11fc449a445f
MD5 c48f64af1981d91660af249336d6395a
BLAKE2b-256 d78fbe1a8f8fba2d58e2b127a5d6317573864e5ef956eaa788dcd8ec0eaf2e53

See more details on using hashes here.

Supported by

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