You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit c49fd05
Browse filesBrowse the repository at this point in the historyBrowse files
feat(run-engine,sdk,webapp): per-key override on a concurrency limit
Override a concurrency limit's `perKey` for a single `concurrencyKey`.
`concurrencyLimits.override(name, { concurrencyKey, perKey, ttl })` caps
that one key under that one limit for a while (7 days by default, 30 at
most), `reset(name, { concurrencyKey })` clears it early, and
`retrieve(name, { concurrencyKey })` shows the key's bound, its override
and when it expires. Other keys and other limits are untouched, and a
paused limit stays paused. The queue detail page shows each key's
override in the concurrency keys table.
```ts
import { concurrencyLimit, concurrencyLimits, task } from "@trigger.dev/sdk";
// one slot per session by default
export const subagentsLimit = concurrencyLimit({ name: "subagents", perKey: 1 });
export const subagent = task({
id: "subagent",
concurrency: subagentsLimit,
run: async (payload: { sessionId: string }) => {},
});
// Existing: override the limit itself, for every key
await concurrencyLimits.override("subagents", { perKey: 2 });
await concurrencyLimits.override("subagents", { total: 50 });
await concurrencyLimits.reset("subagents");
// New: override one key only, for a while
await concurrencyLimits.override("subagents", {
concurrencyKey: sessionId,
perKey: 3, // this session may run 3 at once; every other key keeps the limit's perKey
ttl: "2h", // optional; default 7d, max 30d
});
const view = await concurrencyLimits.retrieve("subagents", { concurrencyKey: sessionId });
console.log(view.perKey.override, view.perKey.expiresAt, view.running);
await concurrencyLimits.reset("subagents", { concurrencyKey: sessionId });
// Runs opt in by carrying the key
await subagent.trigger({ sessionId }, { concurrencyKey: sessionId });
```
`concurrencyKey` goes with `perKey` (and optionally `ttl`), never with
`total`; the SDK's types enforce this.
Mono-RevId: 5b43862fbebf5583aa4c762a6c0660e001cc0a44
Override a concurrency limit's `perKey` for a single `concurrencyKey`: `concurrencyLimits.override(name, { concurrencyKey, perKey, ttl })` caps that one key under that one limit for a while (7 days by default, 30 at most), `reset(name, { concurrencyKey })` clears it, and `retrieve(name, { concurrencyKey })` shows the key's bound and when the override expires.
Copy file name to clipboardExpand all lines: apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.$projectParam.env.$envParam.concurrency_.$queueParam/route.tsx
0 commit comments