Stay organized with collections
Save and categorize content based on your preferences.
You can migrate from using App Engine standard environment's queue service
(Task Queues) via the App Engine Task Queue API to accessing that same service
using Cloud Tasks, a new RPC/REST API. Cloud Tasks can be
employed outside of first generation App Engine runtimes, particularly from all
App Engine flexible environments, as well as from
second generation App Engine standard environment
runtimes.
Cloud Tasks and the current App Engine standard environment
task queue service exist in a single universe. You can add to the same
queues through either API. Regardless of whether you use the App Engine SDK
or the new Cloud Tasks API , a queue within the app forwards a task to a
handler URL for asynchronous processing.
New features
Cloud Tasks provides some features not available via the App Engine
SDK, including the following:
Queue management via the API:
You can create, delete, pause, and perform other queue management tasks
using the API, through the Console, or via the gcloud command.
List Queues command:
You can list all the queues you have set up in your project.
List Tasks command:
You can list all the tasks in any of your queues.
Identity and Access Management (IAM) integration:
You can secure access to your queues and tasks in a highly granular way
using IAM.
HTTP Targets
You can target handlers at any HTTP endpoint with a public IP address.
Features in Task Queues not yet available via Cloud Tasks API :
Cloud Tasks does not support enqueuing a task as part of a
Cloud Datastore transaction, such that the task is only enqueued - and is
guaranteed to be enqueued - if the transaction is committed successfully.
In some cases where you might need a series of diverse small tasks handled
asynchronously but you don't want to go through the work of setting up
individual distinct handlers, the App Engine SDK allows you to use runtime
specific libraries to create simple functions to manage these tasks. This
feature is not available in Cloud Tasks. Note, though, that
normal tasks can be scheduled in the future using Cloud Tasks.
Some of the runtimes that use the App Engine SDK have APIs that
support task multitenancy through namespacing. This feature is not
available in Cloud Tasks.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-29 UTC."],[],[],null,["# Migrate from Task Queues to Cloud Tasks\n\nYou can migrate from using App Engine standard environment's queue service\n(Task Queues) via the App Engine Task Queue API to accessing that same service\nusing Cloud Tasks, a new RPC/REST API. Cloud Tasks can be\nemployed outside of first generation App Engine runtimes, particularly from all\n[App Engine flexible environments](/appengine/docs/flexible), as well as from\n[second generation App Engine standard environment\nruntimes](/appengine/docs/standard/runtimes).\n\nCloud Tasks and the current App Engine standard environment\ntask queue service exist in a single universe. You can add to the same\nqueues through either API. Regardless of whether you use the App Engine SDK\nor the new Cloud Tasks API , a queue within the app forwards a task to a\nhandler URL for asynchronous processing.\n\n### New features\n\nCloud Tasks provides some features not available via the App Engine\nSDK, including the following:\n\n- Queue management via the API:\n\n You can create, delete, pause, and perform other queue management tasks\n using the API, through the Console, or via the `gcloud` command.\n- List Queues command:\n\n You can list all the queues you have set up in your project.\n- List Tasks command:\n\n You can list all the tasks in any of your queues.\n- Identity and Access Management (IAM) integration:\n\n You can secure access to your queues and tasks in a highly granular way\n using [IAM](/iam).\n- HTTP Targets\n\n You can target handlers at any HTTP endpoint with a public IP address.\n\n### Features in Task Queues not yet available via Cloud Tasks API :\n\n- [Pull queues](/appengine/docs/standard/python/taskqueue/pull):\n\n You can use [Cloud Pub/Sub](/pubsub), a GA product, to implement many of\n the same use cases as pull queues.\n- [Transactional tasks](/appengine/docs/standard/python/taskqueue/push/creating-tasks#enqueuing_tasks_in_cloud_datastore_transactions):\n\n Cloud Tasks does not support enqueuing a task as part of a\n Cloud Datastore transaction, such that the task is only enqueued - and is\n guaranteed to be enqueued - if the transaction is committed successfully.\n- [Deferred/delayed tasks](/appengine/docs/standard/python/taskqueue/push/creating-tasks#using_the_instead_of_a_worker_service):\n\n In some cases where you might need a series of diverse small tasks handled\n asynchronously but you don't want to go through the work of setting up\n individual distinct handlers, the App Engine SDK allows you to use runtime\n specific libraries to create simple functions to manage these tasks. This\n feature is not available in Cloud Tasks. Note, though, that\n normal tasks *can* be scheduled in the future using Cloud Tasks.\n- [Namespacing](/appengine/docs/standard/python/taskqueue/push/creating-tasks#working_with_tasks_in_a_multi-tenant_application):\n\n Some of the runtimes that use the App Engine SDK have APIs that\n support task multitenancy through namespacing. This feature is not\n available in Cloud Tasks.\n- [Local emulator](/appengine/docs/standard/python/tools/using-local-server):\n\n The local development server provided by the gcloud CLI or the App Engine SDK\n does not support simulated endpoints for Cloud Tasks API calls.\n- [Asynchronous task add](/appengine/docs/standard/python/taskqueue/push/creating-tasks#adding_tasks_asynchronously):\n\n Users of the App Engine SDK can choose to add tasks to queues asynchronously.\n This feature is not available in Cloud Tasks.\n\n### For more information\n\nMore detailed guides for migrating your code can be found in the App Engine Task Queue\ndocumentation set:\n\n- Migrating from Python 2.7 [pull queues](/appengine/docs/standard/python/taskqueue/pull/migrating-pull-queues) to Pub/Sub\n- Migrating from Python 2.7 [push queues](/appengine/docs/standard/python/taskqueue/push/migrating-push-queues) to Cloud Tasks\n- Migrating from Java 8 [pull queues](/appengine/docs/standard/java/taskqueue/pull/migrating-pull-queues) to Pub/Sub\n- Migrating from Java 8 [push queues](/appengine/docs/standard/java/taskqueue/push/migrating-push-queues) to Cloud Tasks"]]