feat(sat-sync): bajar concurrencia a 3 y aumentar pausa entre lotes a 30s
This commit is contained in:
@@ -15,11 +15,12 @@ const SYNC_CRON_SCHEDULE = '0 3-7 * * *'; // 3:00–7:00 AM CDMX — ~20% de ten
|
||||
const RECOVERY_CRON_SCHEDULE = '0 14 * * *'; // 2:00 PM todos los días
|
||||
const RETRY_4PM_CRON_SCHEDULE = '0 16 * * *'; // 4:00 PM todos los días
|
||||
const CONCURRENT_SYNCS = 3; // Máximo de sincronizaciones simultáneas (legacy, se mantiene por compatibilidad)
|
||||
const CONCURRENT_CONTRIBUYENTES = Number(process.env.SAT_CONCURRENT_CONTRIBUYENTES || '5'); // Máximo de contribuyentes en paralelo
|
||||
const CONCURRENT_CONTRIBUYENTES = Number(process.env.SAT_CONCURRENT_CONTRIBUYENTES || '3'); // Máximo de contribuyentes en paralelo
|
||||
const OPINION_CRON_SCHEDULE = '0 4 * * 0'; // Sundays 4:00 AM
|
||||
const CSF_CRON_SCHEDULE = '0 4 1 * *'; // Día 1 de cada mes 04:00 AM (CSF mensual)
|
||||
const INCREMENTAL_CRON_SCHEDULE = '0 12,16 * * *'; // 12:00 PM y 4:00 PM CDMX
|
||||
const BATCH_JITTER_MS = Number(process.env.SAT_BATCH_JITTER_MS || '60000'); // Jitter máximo entre inicios de sync en un batch (default 60s)
|
||||
const BATCH_DELAY_MS = Number(process.env.SAT_BATCH_DELAY_MS || '30000'); // Pausa entre lotes para no saturar al SAT
|
||||
const SUBSCRIPTION_LIFECYCLE_CRON = '30 2 * * *'; // 2:30 AM diario — aplica pending changes + expira trials
|
||||
const EXPIRY_REMINDERS_CRON = '0 9 * * *'; // 9:00 AM diario — avisos pre-vencimiento (7d/3d/1d/0d)
|
||||
|
||||
@@ -384,9 +385,10 @@ async function runSyncJob(): Promise<void> {
|
||||
return syncUnit(unit, '[SAT Cron]');
|
||||
}));
|
||||
|
||||
// Pequeña pausa entre lotes
|
||||
// Pausa entre lotes para no saturar al SAT
|
||||
if (i + CONCURRENT_CONTRIBUYENTES < units.length) {
|
||||
await new Promise(resolve => setTimeout(resolve, 5000));
|
||||
console.log(`[SAT Cron] Pausa de ${BATCH_DELAY_MS / 1000}s entre lotes`);
|
||||
await new Promise(resolve => setTimeout(resolve, BATCH_DELAY_MS));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -533,8 +535,10 @@ async function runIncrementalSyncJob(): Promise<void> {
|
||||
return syncUnit(unit, '[SAT Cron Inc]');
|
||||
}));
|
||||
|
||||
// Pausa entre lotes para no saturar al SAT
|
||||
if (i + CONCURRENT_CONTRIBUYENTES < units.length) {
|
||||
await new Promise(resolve => setTimeout(resolve, 5000));
|
||||
console.log(`[SAT Cron Inc] Pausa de ${BATCH_DELAY_MS / 1000}s entre lotes`);
|
||||
await new Promise(resolve => setTimeout(resolve, BATCH_DELAY_MS));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@ module.exports = {
|
||||
NODE_ENV: 'production',
|
||||
PORT: 4000,
|
||||
SAT_SYNC_EXCLUDED_TENANTS: 'DEMO2501019X2',
|
||||
SAT_CONCURRENT_CONTRIBUYENTES: '3',
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user