taskferry-cloudrun
Run Taskferry jobs on Google Cloud Run Jobs — serverless, run-to-completion container workloads.
flowchart LR
APP["Application"]
TP["Taskferry"]
AD["taskferry-cloudrun"]
CR["Cloud Run Jobs"]
C["container"]
APP --> TP --> AD --> CR --> C
This is the adapter that shows why Task and Job are separate primitives. A Cloud Run Job has its own image, its own resource envelope, its own timeout and scales to zero — none of which is "a task that takes a while".
Install
pip install 'taskferry-cloudrun[gcp]'
Use
from taskferry import Taskferry, Resources
runtime = Taskferry.from_mapping(
{
"backends": {
"heavy": {
"factory": "cloudrun",
"project": "my-project",
"location": "europe-west1",
}
},
"defaults": {"job": "heavy"},
}
)
handle = runtime.jobs.submit(
"build-cog",
args=["--input", "gs://bucket/scene.tif"],
env={"GDAL_CACHEMAX": "512"},
timeout=3600,
)
print(handle.status())
Capabilities
| Capability | Supported | Why |
|---|---|---|
SUBMIT · STATE · CANCEL · LOGS |
yes | the Executions API |
ENVIRONMENT · PARALLELISM · TIMEOUT · RETRY |
yes | per-execution overrides |
CPU · MEMORY · GPU |
no | they live on the Job resource, not the execution |
A spec asking for Resources(gpu=1) is rejected at submit time rather than run
on a CPU. Route GPU work at a backend that really allocates GPUs
(taskferry-jobs[kubernetes], taskferry-jobs[aws]).
Deploy the Job resource itself with Terraform or gcloud; Taskferry starts
executions of it.
Testing
Both clients are injectable, so the whole suite runs with no GCP account:
CloudRunJobBackend(project="p", location="eu", jobs_client=FakeJobs())
License
Apache-2.0.
Release files for taskferry-cloudrun 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| taskferry_cloudrun-0.4.0.tar.gz | 13.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| taskferry_cloudrun-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.3 kB
Release files / taskferry_cloudrun-0.4.0.tar.gz
| Download URL | taskferry_cloudrun-0.4.0.tar.gz |
|---|---|
| Size | 13.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5273609db28993da9b799a61486c50abcca56b956b6450ea50079f07962a2b72
|
|
BLAKE2b-256 checksum How to use checksums |
b86ba265f1383b12d072255fd9b0425c1d0f2099733b4ed1fda788a92bc5ef7d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency logRelease files / taskferry_cloudrun-0.4.0-py3-none-any.whl
| Download URL | taskferry_cloudrun-0.4.0-py3-none-any.whl |
|---|---|
| Size | 14.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ee035e1a2d67c5dbf5918ef5c4f3f5cbb1c8915a4a4abd77a7d9b9e56591f804
|
|
BLAKE2b-256 checksum How to use checksums |
31ffbd7ce034516c78c6f4fee74ecc0eabf2bea71919c9582720dfb579dcc33f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.
Transparency log