A framework for network services
Project description
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.
Project site: https://radiac.net/projects/mara/
Source code: https://github.com/radiac/mara
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.