Skip to main content

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.

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.

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

mara-2.1.1.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

mara-2.1.1-py3-none-any.whl (22.4 kB view details)

Uploaded Python 3

File details

Details for the file mara-2.1.1.tar.gz.

File metadata

  • Download URL: mara-2.1.1.tar.gz
  • Upload date:
  • Size: 16.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for mara-2.1.1.tar.gz
Algorithm Hash digest
SHA256 f5e11827190d1de622719bc86d02dcbfd4a7f6b0e242719d9316944aa6037da4
MD5 1d1c981da0420473d04ea14518720d3f
BLAKE2b-256 770877465d0dc8dfa718b1dcd5cdfbdfd701c649814f7dbd9b3450a7258b9f11

See more details on using hashes here.

File details

Details for the file mara-2.1.1-py3-none-any.whl.

File metadata

  • Download URL: mara-2.1.1-py3-none-any.whl
  • Upload date:
  • Size: 22.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for mara-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 22172de5ac0adc8651d52471bd976df21bd85f66bc4a4156f1355e8904270d2d
MD5 120b7bcacedf2979fecadd1da3a9c14e
BLAKE2b-256 5b0ed9739f9ef4bf70f1b8f28e331b6055e1ec3eba076e70fb398749e5b6d369

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