Skip to main content

Scale Distribution Framework

Project description

Scaled

This project is aiming the target that provides simple and efficient and reliable way for distributing computing framework, centralized scheduler and stable protocol when client and worker talking to scheduler

Introduction

The goal for this project should be as simple as possible

  • It built on top of zmq
  • it has ready python version of Client, Scheduler, Worker
  • I will provide golang or Rust version of Scheduler, the goal for the Scheduler should be completely computer language agnostic, which means they follow the same protocol
  • Scheduler might support function based computing tree in the future

Installation

pip install scaled

if you want to use uvloop, please do: pip install uvloop, default we are using python builtin uvloop

How to use it

Start local scheduler and cluster at the same time in the code

import random

from scaled.client import Client
from scaled.cluster.combo import SchedulerClusterCombo


def calculate(sec: int):
    return sec * 1


def main():
    address = "tcp://127.0.0.1:2345"

    cluster = SchedulerClusterCombo(address=address, n_workers=10, event_loop="uvloop")
    client = Client(address=address)

    tasks = [random.randint(0, 100) for _ in range(100000)]
    futures = [client.submit(calculate, i) for i in tasks]

    results = [future.result() for future in futures]

    assert results == tasks

    client.disconnect()
    cluster.shutdown()


if __name__ == "__main__":
    main()

Start scheduler and cluster independently

use scaled_scheduler to start scheduler, for example:

scaled_scheduler tcp://0.0.0.0:8516

use scaled_cluster to start 10 workers:

scaled_worker -n 10 tcp://127.0.0.1:8516

for detail options of above 2 program, please use argument -h to check out all available options

Then you can write simply write client code as:

from scaled.client import Client


def foobar(foo: int):
    return foo


client = Client(address="tcp://127.0.0.1:2345")
future = client.submit(foobar, 1)

try:
    print(future.result())
except BaseException as e:
    # make sure disconnect client while waiting for futures
    client.disconnect()

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

scaled-0.17.tar.gz (24.0 kB view details)

Uploaded Source

Built Distribution

scaled-0.17-py3-none-any.whl (34.4 kB view details)

Uploaded Python 3

File details

Details for the file scaled-0.17.tar.gz.

File metadata

  • Download URL: scaled-0.17.tar.gz
  • Upload date:
  • Size: 24.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for scaled-0.17.tar.gz
Algorithm Hash digest
SHA256 3c620f653745fdaf762beabca9da2e8b0e252d78a68955369da4cb1bc7282ed8
MD5 513d34eed915c849d8c6c9b38b58a0b0
BLAKE2b-256 35179ff580a78e2c4c0ffedd8c4c058ebc346f45334561268d3ac274489f49ea

See more details on using hashes here.

File details

Details for the file scaled-0.17-py3-none-any.whl.

File metadata

  • Download URL: scaled-0.17-py3-none-any.whl
  • Upload date:
  • Size: 34.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for scaled-0.17-py3-none-any.whl
Algorithm Hash digest
SHA256 a3fc4c1062e5321cc0580b7346a93c4d06fac6f20858f3a8477fbef9e7017b9f
MD5 c7172d82c87f3a3246c3fe989e69fcd0
BLAKE2b-256 3addbdeab10268a3902ff8de2d3819e35583131f75eef6dcf5c587a657827e3f

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