Skip to main content

Hi-Level API for Golem The Next Milestone

Project description

Golem Python API

Tests - Status PyPI - Status PyPI version GitHub license GitHub issues

How to use

Rendering

from yapapi.runner import Engine, Task, vm
from datetime import timedelta


async def main():
    package = await vm.repo(
        image_hash="ef007138617985ebb871e4305bc86fc97073f1ea9ab0ade9ad492ea995c4bc8b",
        min_mem_gib=0.5,
        min_storage_gib=2.0,
    )

    async def worker(ctx, tasks):
        ctx.send_file("./scene.blend", "/golem/resource/scene.blend")
        async for task in tasks:
            frame = task.data
            ctx.begin()
            crops = [
                {
                    "outfilebasename": "out",
                    "borders_x": [0.0, 1.0],
                    "borders_y": [0.0, 1.0],
                }
            ]
            ctx.send_json(
                "/golem/work/params.json",
                {
                    "scene_file": "/golem/resource/scene.blend",
                    "resolution": (800, 600),
                    "use_compositing": False,
                    "crops": crops,
                    "samples": 100,
                    "frames": [frame],
                    "output_format": "PNG",
                    "RESOURCES_DIR": "/golem/resources",
                    "WORK_DIR": "/golem/work",
                    "OUTPUT_DIR": "/golem/output",
                },
            )
            ctx.run("/golem/entrypoints/render_entrypoint.py")
            ctx.download_file("/golem/output/out.png", f"output_{frame}.png")
            yield ctx.commit()
            # TODO: Check if job is valid
            # and reject by: task.reject_task(msg = 'invalid file')
            task.accept_task()

        ctx.log("no more frame to render")

    async with Engine(
        package=package,
        max_worker=10,
        budget=10.0,
        timeout=timedelta(minutes=5),
    ) as engine:
        async for progress in engine.map(
            worker, [Task(data=frame) for frame in range(1, 101)]
        ):
            print("progress=", progress)

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

yapapi-0.1.2.tar.gz (26.7 kB view details)

Uploaded Source

Built Distribution

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

yapapi-0.1.2-py3-none-any.whl (31.7 kB view details)

Uploaded Python 3

File details

Details for the file yapapi-0.1.2.tar.gz.

File metadata

  • Download URL: yapapi-0.1.2.tar.gz
  • Upload date:
  • Size: 26.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.9 CPython/3.6.9 Linux/5.3.0-59-generic

File hashes

Hashes for yapapi-0.1.2.tar.gz
Algorithm Hash digest
SHA256 71eae957786dd351d12a356a2c813c8844d8084bc66921548820cbb5c0f36b97
MD5 b29fbfcd06e958b6a5eaabf2ac26dfe4
BLAKE2b-256 df01bec58b10d2b34fe6ab36f898798d012d9c13cb8717465375098cd2f18707

See more details on using hashes here.

File details

Details for the file yapapi-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: yapapi-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 31.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.9 CPython/3.6.9 Linux/5.3.0-59-generic

File hashes

Hashes for yapapi-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2b6b1c2813db7c38ef5832b610a92105bc98326a84eed56169b6793db6d18c11
MD5 1875aab404b7b708a044ff8a711b5b02
BLAKE2b-256 d34d1d353b379c5cb85c0eb49773b149d41d013006e5ed22a43ac6fef3795c5f

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