Skip to content
/ mara Public

An asynchronous event-based Python framework for building network services

License

Notifications You must be signed in to change notification settings

radiac/mara

Repository files navigation

Mara - Python network service framework

An asynchronous event-based python framework designed for building TCP/IP services - run multiple socket, telnet, HTTP and websocket servers from a single async process.

PyPI Documentation Status Tests Test coverage

Features

  • Asynchronous event-based framework
  • Supports multiple servers - text, telnet, HTTP and websockets included

Requires Python 3.10 or later, see installation.

See the Documentation for details of how Mara works.

Note: The last release to support Python 2 and 3.9 was version 0.6.3.

Quickstart

Install Mara with pip install mara, then write your service using event handlers.

A minimal Mara service looks something like this:

from mara import App, events
from mara.servers.socket import SocketServer

app = App()
app.add_server(SocketServer(host="127.0.0.1", port=9000))

@app.on(events.Receive)
async def echo(event: events.Receive):
    event.connection.write(event.data)

app.run()

Save it as echo.py and run it:

$ python echo.py
Server listening: Socket 127.0.0.1:9000

More examples

Take a look at the examples to see how to start writing more complex services:

  • Chat over a raw text TCP socket, or one with TLS encryption
  • Chat over a telnet server
  • Chat over a websocket server
  • Two servers, one process: chat between a websocket and a telnet server

Read the documentation for details of how Mara works.

About

An asynchronous event-based Python framework for building network services

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages