Skip to main content

Hi-Level API for Golem The Next Milestone

Project description

Golem Python API

GitHub license PyPI version GitHub issues Continuous integration

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.1.tar.gz (24.3 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.1-py3-none-any.whl (29.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: yapapi-0.1.1.tar.gz
  • Upload date:
  • Size: 24.3 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.1.tar.gz
Algorithm Hash digest
SHA256 4dbafd7979e367761f7b741ce9f181fed3215e8fbdf6e7537675f56bc77ae95b
MD5 8353b3eb471bda17492296b34f6c429c
BLAKE2b-256 b8240c79d9a61e1d1db1ea3ee78e6ff9ae5a66aca744e1d860b1d4a289bc4f8c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: yapapi-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 29.2 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 31fc040c6ed00285016650e963eeb7289ba7186e33813f1c2e590b601b85acc5
MD5 f61939744e910fa50de80a826d520767
BLAKE2b-256 73f874d64934f47fc59be021123e8a10bc37d8e3099b7ec313ef0916832acae9

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