Skip to main content

remote execution framework

Project description

# Odium: Remote Execution / Distributed Application Framework

## Requirements:

* Python 3 (>= 3.5) and git are installed.
* Remote execution: Arbitrary execution of code on remote systems under the connected user account.
* Versioned state: Each version of the configuration state has a unique id (hash of the state declaration), so that remotely executed commands can ensure the correct state for that command, thus ensuring that the calculation is done with the expected code / library / application / version.
* Any instance is both a hub and a node. It is a node to its source hub, it is a hub to any nodes that have connected to it.
* All communication encrypted between hub and node. Each publishes its public key for this purpose.

## Design:

* JSON for all messages.
* ZeroMQ for all network messaging.
* TCP port: default 18202, but configurable.
(2018-02-02 = date of "Past Life" Agents of S.H.I.E.L.D. episode, first reference to odium)
* Node and hub communicate using PUB/SUB (broadcast/query => nodes), REQ/REP (query => hub)
Also PUSH/PULL (job queue => nodes), and PULL/PUSH (result collection => hub).
* hub PUB / node SUB @ 18202
* node REQ / hub REP @ 18203
* hub PUSH / node PULL @ 18220
* node PUSH / hub PULL @ 18221
* Instance uses relational database to store configuration state, job queue, log, ...
(sqlite in the simple case)
* All communication includes the current configuration state id for the sending instance.
* Configuration state id = Application's current git commit hash.
* Configuration state includes: pip & system packages installed, state / environment data
* Commands (broadcast and queued) are executed in the application environment using multiprocess & subprocess. Results, logs, and errors are collected and returned via REQ => hub or PUSH => hub
* Asynchronous and multiprocessing:
* node listens on a main thread for instructions, then pushes instructions to other threads for processing. It can thus handle an unlimited number of instructions before the first have finished.
* hub listens on a main thread for requests, then pushes request processing to other threads.
* hub & node both send messages on main thread.


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

odium-0.0.1.tar.gz (2.3 kB view details)

Uploaded Source

Built Distribution

odium-0.0.1-py2.py3-none-any.whl (2.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file odium-0.0.1.tar.gz.

File metadata

  • Download URL: odium-0.0.1.tar.gz
  • Upload date:
  • Size: 2.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for odium-0.0.1.tar.gz
Algorithm Hash digest
SHA256 27410fc28ea236a15ea15a1fef5b3d6704b88eaa48a9a640500a9019d9bf9d7b
MD5 8e8191b0951309b3dad7540db6fc7d1b
BLAKE2b-256 b126ec55534bbcf18782d0f850e946bb24fdcf7467190a9be35bdc0a34cf8923

See more details on using hashes here.

File details

Details for the file odium-0.0.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for odium-0.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 ca6b61ae269a22af07eb04fbf434d1c7b814881dc5e2f90e5d51fffc279d927f
MD5 c73be5cd5c947e9d04f01acb7a017aa4
BLAKE2b-256 d8cdaacdd7a59ca0fc303ee5dfc7711ec8a8b3cdeb0f15491d7fa11b6069f6d7

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