Skip to main content

AetherMagic - Communications between microservices over MQTT

Project description

AetherMagic

Communications between microservices over MQTT

The goal is to create communication between microservices, using such advantages as:

  • Scaling (multiple microservices to perform one group of tasks)
  • Distribution of tasks (only one microserver receives a task in a group)
  • Distribution of access rights for specific tasks/roles (setting or execution) and division, if necessary, by projects (by configuring access rights on the server side in the MQTT broker)

Installation

pip install aethermagic

Example

To launch a task on master-server / separate process:

from aethermagic import AetherTask

async def complete(ae, success, output_data):
  print('complete')

async def status(ae, complete, success, progress, output_data):
  print('status')

input_data = {}
await AetherTask(None, 'worker', 'collect', on_complete=complete, on_status=status).perform(input_data)

Variables and values:

  • complete True / False
  • success True / False
  • progress 0...100
  • input_data user-defined data to serialize into JSON
  • output_data user-defined data unserialized from JSON

To perform task on worker-server / separate process:

from aethermagic import AetherTask


async def perform(ae, input_data):
  print('perform')

  await ae.status(100) # Optional

  output_data = {}
  success = True
  await ae.complete(success, output_data)
  

await AetherTask(None, 'worker', 'collect', on_perform=perform).idle()

Variables and values:

  • input_data user-defined data to serialize into JSON
  • output_data user-defined data unserialized from JSON

AetherMagic requires running or joining an existing async loop:

For example, in simple python app you can do it with the following code:

import threading
import asyncio
from aethermagic import AetherMagic

def startloop(self, args=[None]) -> None:

  async def starttask() -> None:

    aem = AetherMagic(server=settings.MQTT_BROKER, port=settings.MQTT_PORT, ssl=True, user=settings.MQTT_USER, password=settings.MQTT_PASSWORD, union=settings.AETHER_UNION)

    async with asyncio.TaskGroup() as group:
      group.create_task(aem.main())
      #group.create_task(your_loop.main()) # Optional: You can create your own async loop

  asyncio.run(starttask())

thread = threading.Thread(target=startloop, args=[None])
thread.start()
thread.join() # Will wait for thread execution to complete ==> never

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

aethermagic-0.0.5.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

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

aethermagic-0.0.5-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file aethermagic-0.0.5.tar.gz.

File metadata

  • Download URL: aethermagic-0.0.5.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for aethermagic-0.0.5.tar.gz
Algorithm Hash digest
SHA256 c811c41385bd4393908d28c64d0d36181a8fdaa6a9bd5d8c258139522c3aeea0
MD5 0c7f8dae81601a9d045c2b2b7220fe4f
BLAKE2b-256 f4775e68eba4eb51cdafdfd7b9ec9069fd33fb43a037741d498cf7eb9deb4c1d

See more details on using hashes here.

File details

Details for the file aethermagic-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: aethermagic-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for aethermagic-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 2a3f301efa4fa878cdab4020956bc2ac5855c28b2a1f9ae6ff55634bac4fd267
MD5 87be7157339714726e4e76bfa5acb5fa
BLAKE2b-256 030a00cd6e04abc1c4112e94d126e8af4a0ba649e78c11b22556b13941853b36

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