fixed cache keys
This commit is contained in:
parent
db3aa9c330
commit
19dfda2392
13 changed files with 286 additions and 221 deletions
|
|
@ -1,9 +1,6 @@
|
|||
import { getLogger } from '@stock-bot/logger';
|
||||
import { QueueManager } from './queue-manager';
|
||||
import type { BatchJobData, BatchResult, JobData, ProcessOptions } from './types';
|
||||
|
||||
const logger = getLogger('batch-processor');
|
||||
|
||||
/**
|
||||
* Main function - processes items either directly or in batches
|
||||
* Each item becomes payload: item (no processing needed)
|
||||
|
|
@ -14,7 +11,12 @@ export async function processItems<T>(
|
|||
options: ProcessOptions,
|
||||
queueManager: QueueManager
|
||||
): Promise<BatchResult> {
|
||||
queueManager.getQueue(queueName);
|
||||
const queue = queueManager.getQueue(queueName);
|
||||
const logger = queue.createChildLogger('batch-processor', {
|
||||
queueName,
|
||||
totalItems: items.length,
|
||||
mode: options.useBatching ? 'batch' : 'direct',
|
||||
});
|
||||
const startTime = Date.now();
|
||||
|
||||
if (items.length === 0) {
|
||||
|
|
@ -61,7 +63,11 @@ async function processDirect<T>(
|
|||
options: ProcessOptions,
|
||||
queueManager: QueueManager
|
||||
): Promise<Omit<BatchResult, 'duration'>> {
|
||||
queueManager.getQueue(queueName);
|
||||
const queue = queueManager.getQueue(queueName);
|
||||
const logger = queue.createChildLogger('batch-direct', {
|
||||
queueName,
|
||||
totalItems: items.length,
|
||||
});
|
||||
const totalDelayMs = options.totalDelayHours * 60 * 60 * 1000; // Convert hours to milliseconds
|
||||
const delayPerItem = totalDelayMs / items.length;
|
||||
|
||||
|
|
@ -105,7 +111,11 @@ async function processBatched<T>(
|
|||
options: ProcessOptions,
|
||||
queueManager: QueueManager
|
||||
): Promise<Omit<BatchResult, 'duration'>> {
|
||||
queueManager.getQueue(queueName);
|
||||
const queue = queueManager.getQueue(queueName);
|
||||
const logger = queue.createChildLogger('batch-batched', {
|
||||
queueName,
|
||||
totalItems: items.length,
|
||||
});
|
||||
const batchSize = options.batchSize || 100;
|
||||
const batches = createBatches(items, batchSize);
|
||||
const totalDelayMs = options.totalDelayHours * 60 * 60 * 1000; // Convert hours to milliseconds
|
||||
|
|
@ -162,10 +172,15 @@ async function processBatched<T>(
|
|||
* Process a batch job - loads items and creates individual jobs
|
||||
*/
|
||||
export async function processBatchJob(jobData: BatchJobData, queueName: string, queueManager: QueueManager): Promise<unknown> {
|
||||
queueManager.getQueue(queueName);
|
||||
const queue = queueManager.getQueue(queueName);
|
||||
const logger = queue.createChildLogger('batch-job', {
|
||||
queueName,
|
||||
batchIndex: jobData.batchIndex,
|
||||
payloadKey: jobData.payloadKey,
|
||||
});
|
||||
const { payloadKey, batchIndex, totalBatches, itemCount, totalDelayHours } = jobData;
|
||||
|
||||
logger.trace('Processing batch job', {
|
||||
logger.debug('Processing batch job', {
|
||||
batchIndex,
|
||||
totalBatches,
|
||||
itemCount,
|
||||
|
|
@ -186,7 +201,7 @@ export async function processBatchJob(jobData: BatchJobData, queueName: string,
|
|||
const delayPerBatch = totalDelayMs / totalBatches; // Time allocated for each batch
|
||||
const delayPerItem = delayPerBatch / items.length; // Distribute items evenly within batch window
|
||||
|
||||
logger.trace('Calculating job delays', {
|
||||
logger.debug('Calculating job delays', {
|
||||
batchIndex,
|
||||
delayPerBatch: `${(delayPerBatch / 1000 / 60).toFixed(2)} minutes`,
|
||||
delayPerItem: `${(delayPerItem / 1000).toFixed(2)} seconds`,
|
||||
|
|
@ -301,6 +316,10 @@ async function addJobsInChunks(
|
|||
chunkSize = 100
|
||||
): Promise<unknown[]> {
|
||||
const queue = queueManager.getQueue(queueName);
|
||||
const logger = queue.createChildLogger('batch-chunk', {
|
||||
queueName,
|
||||
totalJobs: jobs.length,
|
||||
});
|
||||
const allCreatedJobs = [];
|
||||
|
||||
for (let i = 0; i < jobs.length; i += chunkSize) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue