Queues that actually dispatch.
Queues and tasks over gRPC and JSON, with HTTP dispatch, retries and enforced rate limits.
Backed by: CloudBurrow CloudBurrow
In the console
What it covers
Cloud Tasks is built by CloudBurrow, because Google publishes no emulator for it. Tasks are dispatched to HTTP targets with retry; queue rate limits are enforced from the next release. Fields it would otherwise drop are refused with the field named.
- Queues and tasks
- Pause and resume
- HTTP dispatch with retry
- Rate limits enforced (#716) next release
Tested snippet
From docs/examples/ at main 82a2eb9. CI runs these blocks against CloudBurrow.
import os, uuid, grpc
from google.cloud import tasks_v2
from google.cloud.tasks_v2.services.cloud_tasks.transports import CloudTasksGrpcTransport
channel = grpc.insecure_channel(os.environ["CLOUDBURROW_TASKS_ENDPOINT"])
client = tasks_v2.CloudTasksClient(transport=CloudTasksGrpcTransport(channel=channel))
parent = f"projects/{os.environ['GOOGLE_CLOUD_PROJECT']}/locations/us-central1"
queue = client.create_queue(parent=parent, queue={"name": f"{parent}/queues/example-{uuid.uuid4().hex[:12]}"})
assert client.get_queue(name=queue.name).name == queue.name
client.delete_queue(name=queue.name)
This block is run by CloudBurrow's Python suite in CI. If it stops working, CI fails. docs/examples/python.md
import assert from 'node:assert/strict';
import { randomUUID } from 'node:crypto';
import { CloudTasksClient } from '@google-cloud/tasks';
import { grpc } from 'google-gax';
const endpoint = new URL(`http://${process.env.CLOUDBURROW_TASKS_ENDPOINT}`);
const client = new CloudTasksClient({
apiEndpoint: endpoint.hostname,
port: Number(endpoint.port),
sslCreds: grpc.credentials.createInsecure(),
});
const parent = `projects/${process.env.GOOGLE_CLOUD_PROJECT}/locations/us-central1`;
const [queue] = await client.createQueue({ parent, queue: { name: `${parent}/queues/example-${randomUUID()}` } });
const [got] = await client.getQueue({ name: queue.name });
assert.equal(got.name, queue.name);
await client.deleteQueue({ name: queue.name });
await client.close();
This block is run by CloudBurrow's Node.js suite in CI. If it stops working, CI fails. docs/examples/node.md
What's verified
Cloud Tasks
11 of 16 RPCs Verified in v0.1.0
15 of 16 RPCs Verified on main next release
Not supported
- No App Engine targets
- No OIDC or OAuth tokens on HTTP tasks; on main they are refused with the field named #578
Source: docs/compatibility.md at main 82a2eb9.
Questions
Do tasks carry OIDC tokens?
Build against Google Cloud APIs, locally
Free and open source under Apache-2.0. No account, no sign-up, no Google Cloud bill.