Distributed computing for everyone in modern Python.
Project description
achilles
Extremely accessible distributed/parallel computing (BYOB - Build Your Own Beowulf) in modern Python based on:
- Twisted;
- cloudpickle;
- multiprocessing; and,
- lessons learned from studying Hadoop, Apache Spark, Apache Arrow, Parallel Python, Ray, Jug, Pathos, Disco, SCOOP, Cluster-Workers and the questions asked regarding these projects on StackOverflow.
The goal of the achilles framework is to drastically reduce the barriers to entry for developers to use all of the computational power available on their networks and provide engingeers with an accessible, highly flexible framework for building distributed/parallel computing into their applications applications.
As achilles continues to be actively developed, the project will continue to be designed in alignment with our four demands for the project:
achillesmust be simple to use;achillesmust 'just work' at all scales, from running all of the components on an individual's laptop to running on powerful clusters in distributed systems;achillesmust be scalable and accommodate 'big data' workloads (i.e. files too large to open in memory on a single machine);achillesshould be fast as hell and regularly benchmarked against alternative solutions; and,achillesmust be SECURE. Currently,achillesis not suitable for deployment outside oflocalhost. We are currently working on an SSH implementation.
Consists of:
achilles_server.py- Runs a Twisted TCP server listening at the endpoint described in the
.envconfiguration file. Establishes and maintains persistent connections with multipleachilles_nodes(potentially running across numerous machines), distributes computations among them at the instruction of theachilles_controller, and sends the result(s) to theachilles_controllerin theresponse_modespecified inachilles_compute().
- Runs a Twisted TCP server listening at the endpoint described in the
achilles_node.py- Connect to the
achilles_serverand receive ID assignment. Wait for a job to be started, receive a function over the wire, receive an argument over the wire and then keep feeding the server results/receiving new arguments until all arguments are exhausted.
- Connect to the
achilles_controller.py- Connect to the
achilles_serverand instruct it which function to perform against which arguments with whichresponse_mode. Verify the job and wait for the results to be returned -achilles_serverwill do the rest. - Available commands in
achilles_controllercommand interface:achilles_compute,cluster_status,kill_cluster,help
- Connect to the
Configuration files:
achilles_config.yaml- Use
pyYamlto load the configuration file for a job intoachilles_controller.py. See below for additional information on how to structure this file.
- Use
achilles_function.pyachilles_function()is cloudpickled and distributed to all connected clients as a part of theself.startJob()handshake initiated afterachilles_controller.pyverifies the commencement of a job.
.env- Use
python-dotenvto load the local file into the system's environmental variables for configuration and authentication. - Basic security precaution. To-do: explore encryption.
- Use
achilles is in active development and your suggestions are kindly welcomed. achilles is written and maintained by Alejandro Peña. Email me at adpena<3gmail.com.
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.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file achilles-0.0.1.tar.gz.
File metadata
- Download URL: achilles-0.0.1.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4027452bb33ab06edaf344b08be4bdfe6fc75a2e528127e52e739839875568a8
|
|
| MD5 |
49bf29be5e69377e0d305eccc26f0cb3
|
|
| BLAKE2b-256 |
5c71cea6e8c3ceeec0ae3c69904f7fd3f2d63bcf7fd922b5c86e809fc0e6574e
|
File details
Details for the file achilles-0.0.1-py3-none-any.whl.
File metadata
- Download URL: achilles-0.0.1-py3-none-any.whl
- Upload date:
- Size: 25.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8760ce10069d2d88fb02fcefe8edaf385141dfbe2a87a986cd64defa2c5003ee
|
|
| MD5 |
c1f2ae1df0ca406a0306c678b2283cee
|
|
| BLAKE2b-256 |
70c18241fb7ac87842cfee7e95cb8788d12fac5827b254e0080da8fc9a81a8c1
|