Task Queue Overview Stay organized with collections Save and categorize content based on your preferences.
This page describes what task queues are, and when and how to use them.Task queues let applications perform work, calledtasks,asynchronously outside of a user request. If an app needs to execute workin the background, it adds tasks totask queues. The tasks are executed later,by worker services.
The Task Queue service is designed for asynchronous work. It does notprovide strong guarantees around the timing of task delivery and is thereforeunsuitable for interactive applications where a user is waiting for the result.
This API is supported for first-generation runtimes and can be used whenupgrading to corresponding second-generation runtimes. If you are updating to the App Engine Python 3 runtime, refer to themigration guide to learn about your migration options for legacy bundled services.Push queues and pull queues
Task queues come in two flavors,push andpull. The manner in which theTask Queue service dispatches task requests to worker services is different forthe different queues.
Push queues run tasks by delivering HTTP requests to App Engine worker services.They dispatch these requests at a reliable, steady rate and guaranteereliable task execution. Because you can control the rate at which tasks aresent from the queue, you can control the workers' scaling behavior and henceyour costs.
Because tasks are executed as requests targeted at App Engineservices, they are subject to stringent deadlines. Tasks handled by automaticscaling services must finish in ten minutes. Tasks handled by basic and manualscaling services can run for up to 24 hours.
Pull queues do not dispatch tasks at all. They depend on other workerservices to "lease" tasks from the queue on their own initiative. Pull queuesgive you more power and flexibility over when and where tasks are processed, butthey also require you to do more process management. When a task is leased theleasing worker declares a deadline. By the time the deadline arrives the workermust either complete the task and delete it or the Task Queue service willallow another worker to lease it.Tip: In some casesGoogle Cloud Pub/Sub is a goodalternative to pull queues. All task queue tasks are performedasynchronously. The application that createsthe task hands it off to the queue. The originating application is not notifiedwhether or not the task completes, or if it was successful. If a worker fails to process a task, the Task Queue service provides the queuewith a retry mechanism, so the task can be retried a finite number of times. One typical push queue use case is a "slow" operation. Consider a socialnetwork messaging system. Every time a user sends a message, the network needsto update the followers of the sender. This can be a very time-consumingoperation. Using a push queue, the application can enqueue a task for eachmessage as it arrives to be dispatched to a worker service for processing. Whenthe worker receives the task request, it can retrieve the sender's list offollowers and update the DB for each one. The worker can be made even moreefficient by enqueuing another pushtask for each database update. Another use for push queues is scheduled tasks. Imagine an application thatimplements an ad campaign. A group of tasks written to send out emails can beadded to a push queue with instructions to withhold the tasks until a specifiedtime in the future. When the due date arrives, the Task Queue service willbegin to issue requests to execute the tasks. Pull queues work well when you need to batch tasks together for efficientexecution. One solution takes advantage of the ability to attach atag to apull task. Workers can lease a group of tasks that have the same tag. A typicalexample might be an app that maintains leaderboards for numerous different games, withmany players and groups constantly in play. Every time there is a new highscore, the app can enqueue a pull task with the score and the player, and usethe game ID as a task tag. A worker periodically "wakes up", leases a group oftasks with the same game ID, and updates the leaderboard. You can lease tasksexplicitly, using a specified tag value, or let the service decide which groupof similarly tagged tasks to send. Batching with tags can be very powerful. Since tags can be dynamicallygenerated while your app is running, a worker can handle new game IDs with nospecial effort.Use cases
Push queues
Pull queues
What's next
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-12-15 UTC.