Service eligibility and regional restrictions
PuppyIP serves only compliant overseas businesses and their authorized personnel. Proxy services are not available in mainland China. The service may only be used for lawful business activities outside mainland China. Use of this service within mainland China is prohibited.
Hosting a proxy IP or server overseas does not change these restrictions. The service must not be provided to end users in mainland China through relaying, forwarding, sharing or resale. Before use, read the Terms of Service.
Key Takeaways
- The November 10 update adds concurrency.limit for individual Workflows. It requires Wrangler 4.127.0 or later; local development does not enforce the cap.
- Account concurrency is shared across all Workflows: 100 instances on Workers Free or 50,000 on Workers Paid. A per-Workflow cap cannot increase that allowance.
- Instances above the concurrency cap enter queued until capacity becomes available. Brief sleeps or retries may retain a slot until the instance actually enters a state such as waiting.
- Scheduled instances on Workers Paid have a concurrency budget of up to one hour per firing. During it, they consume no Workflow concurrency slot and are not held back by the per-Workflow cap; afterward they join the normal queue.
What does the new cap limit, and why is an instance queued?
Cloudflare announced per-Workflow concurrency limits on November 10, 2026. They control how many instances of one Workflow run at once. If a database can handle only a few parallel connections, for example, a lower cap can stop every task from calling it simultaneously. An instance is a Workflow execution, rather than one HTTP request inside it.
An ordinary constrained instance needs capacity under both its account and Workflow limits. Account capacity is shared across all Workflows: 100 on Workers Free or 50,000 on Workers Paid. An instance can therefore queue even when its own Workflow is below its cap. The special Workers Paid schedule budget is explained below.
Instances above a concurrency cap are not rejected for that reason. They enter queued and start when running instances finish or release capacity. A Workflow without its own cap can still use the account’s available concurrency. Queued is neither completed nor, by itself, evidence that a task failed.
How do you set the cap and keep it on later deployments?
Use Wrangler 4.127.0 or later, set concurrency.limit in the configuration for the Worker that defines the Workflow, then deploy that Worker. With a hypothetical value of 10, ordinary constrained execution can occupy at most 10 instance slots at once. The value must be a positive integer no higher than the account limit. No account deployment was performed for this article.
Every deployment sets the cap from its configuration. Deploying without concurrency removes the existing cap, so retain it in the configuration you actually deploy. Lowering a cap does not stop instances already running. If their count exceeds the new value, no new constrained instance starts until the count falls below it.
Local development does not enforce this concurrency limit, so a local result cannot establish production behavior. concurrency cannot be combined with script_name. When binding to a Workflow defined in another Worker, set the cap on the Worker that defines it, rather than only changing the caller.
Do sleeps, retries, pauses and rollbacks still occupy slots?
Instances actually in waiting or paused do not count toward concurrency. Calling step.sleep, waiting for a retry or using step.waitForEvent can move an instance to waiting, but release is not necessarily immediate. During a short wait it may remain running and retain its slot.
Running instances, instances finishing work before pausing in waitingForPause, and instances executing rollback handlers still count. Allow for brief sleeps and retries when choosing a cap; waiting in ordinary language does not always mean the instance has released capacity.
When a waiting or paused instance is ready to continue, it queues again if either limit is full. Check the original instance’s actual state and capacity conditions before intervening. Creating the same task again can repeat business actions.
Why can a Paid scheduled task run above the configured number?
On Workers Paid, a Workflow instance created by schedules has a concurrency budget of up to one hour per cron firing. During that budget it consumes no Workflow concurrency slot and is not held back by the per-Workflow cap. Seeing a scheduled instance run does not, by itself, establish that concurrency.limit failed.
After the budget is used, the instance yields and enters the normal concurrency queue. It resumes when both the account and Workflow have capacity. The documentation says using up this budget does not itself fail, time out or terminate the instance.
This hour is a scheduling rule, rather than a promise of free usage or a CPU, step-count or total-runtime guarantee. It applies to scheduled Workflow instances on Workers Paid; do not transfer it to Workers Free, ordinary HTTP requests or other Cron Trigger invocation types.
Separate concurrency queues, creation rates and charges
Instance creation has a separate rate limit. The current table lists 100 per second on Workers Free; on Workers Paid, it lists 300 per second per account and 100 per second per Workflow. Exceeding creation rates can return HTTP 429, which differs from an existing instance entering queued for lack of concurrency.
Queue capacity is also bounded: the current table lists 100,000 instances on Free and 2,000,000 on Paid. A statement that excess concurrency queues does not establish unlimited creation, indefinite retention or an immediate start. These sources do not provide a guaranteed waiting time.
The announcement, concurrency guide and limits page reviewed here do not specify billing treatment for queued instances. Neither queueing nor the cron concurrency budget establishes free usage. Check current official terms for your account’s charges, access and regional availability separately.
How should you verify the result for your own tasks?
Record the target Workflow, Wrangler version, deployed configuration, account capacity and original instance ID first. Within your existing authorization, observe queued, running, waiting and completion states with a few tasks that have no external side effects. Local development does not enforce the cap and cannot replace a production check.
Record creation, execution and completed business work separately. If a task writes data or calls an external API, check the original instance and downstream result before deciding whether to retry. Treating capacity waits as failures can cause duplicate submissions.
This article uses first-party public documentation. No Cloudflare account was accessed, Worker deployed, instance created or bill tested. Account-specific access, actual waiting times and business results remain unverified. A different proxy exit does not add account concurrency or grant platform eligibility.
Sources
Frequently Asked Questions
Do queued instances start in strict creation order?
The guide describes best-effort scheduling in the order instances were queued, rather than a strict ordering or fixed-start-time guarantee. Tasks that require business ordering still need their own ordering controls; the concurrency queue alone is insufficient.
Must all Workflow caps add up to the account limit?
No. The guide allows the sum of Workflow caps to exceed account concurrency, but caps are ceilings rather than reservations. A cap on an important Workflow does not reserve slots for it. Limit other Workflows too if they could exhaust the shared capacity.