Starts by default

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

Cloud Tasks queues in the local console
Captured 2026-09-28 from main @5da2bd0. Product icons hidden.
A Cloud Tasks queue with the tasks waiting in it
Captured 2026-09-28 from main @5da2bd0. Product icons hidden.

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.

Python · Cloud Tasks
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

Node.js · Cloud Tasks
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

Cloud Tasks in v0.1.0: 11 Verified of 16

15 of 16 RPCs Verified on main next release

Cloud Tasks on main: 15 Verified of 16
Every Cloud Tasks RPC, with its test →

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?

No. On main, OIDC and OAuth tokens are refused with UNIMPLEMENTED naming the field (#578), rather than dispatched without an Authorization header.
Link to this answer

Build against Google Cloud APIs, locally

Free and open source under Apache-2.0. No account, no sign-up, no Google Cloud bill.

Get started