blazerjob
Version:
TypeScript library for scheduling, executing, and managing asynchronous tasks (custom, HTTP, Cosmos) with a SQLite backend.
31 lines (30 loc) • 1.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.scheduleManyCosmosQueries = scheduleManyCosmosQueries;
/**
* Programme facilement un grand nombre de requêtes Cosmos sur une liste d'adresses.
* Les adresses sont utilisées en round-robin.
*/
async function scheduleManyCosmosQueries(job, opts) {
const { addresses, count, queryType, intervalMs = 100, configOverrides = {}, retriesLeft = 0, priority = 0, runAt, webhookUrl } = opts;
if (!addresses || addresses.length === 0)
throw new Error('addresses must be a non-empty array');
for (let i = 0; i < count; i++) {
const address = addresses[i % addresses.length];
const scheduledAt = runAt
? (runAt instanceof Date ? new Date(runAt.getTime() + i * intervalMs) : new Date(new Date(runAt).getTime() + i * intervalMs))
: new Date(Date.now() + i * intervalMs);
job.schedule(async () => { }, {
type: 'cosmos',
runAt: scheduledAt,
priority,
retriesLeft,
webhookUrl,
config: {
queryType,
queryParams: { address },
...configOverrides
}
});
}
}