start job for sync
This commit is contained in:
parent
ad5c4aa58b
commit
e4e1e130e0
|
|
@ -0,0 +1,59 @@
|
|||
// cron-sync.ts
|
||||
import cron from 'node-cron';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import path from 'node:path';
|
||||
import dotenv from 'dotenv';
|
||||
import http from 'node:http';
|
||||
import https from 'node:https';
|
||||
import { syncAllDomains } from './app/lib/sync'; // .ts/.js-Endung NICHT nötig mit NodeNext
|
||||
|
||||
// __dirname in ESM/TS:
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
// .env robust laden – relativ zum Script-Verzeichnis
|
||||
dotenv.config({ path: path.join(__dirname, '.env') });
|
||||
|
||||
// Keep-Alive für HTTP(S)
|
||||
http.globalAgent.keepAlive = true;
|
||||
https.globalAgent.keepAlive = true;
|
||||
|
||||
// Debug-Logging
|
||||
console.log('DATABASE_URL:', process.env.DATABASE_URL);
|
||||
console.log('AWS_REGION:', process.env.AWS_REGION);
|
||||
console.log('AWS_ACCESS_KEY_ID:', process.env.AWS_ACCESS_KEY_ID ? 'Set' : 'Not set');
|
||||
console.log('AWS_SECRET_ACCESS_KEY:', process.env.AWS_SECRET_ACCESS_KEY ? 'Set' : 'Not set');
|
||||
|
||||
// Timeout-Wrapper (10 Min Default)
|
||||
async function runSyncWithTimeout(timeoutMs = 600_000) {
|
||||
return Promise.race([
|
||||
syncAllDomains(),
|
||||
new Promise((_, reject) => setTimeout(() => reject(new Error('Sync timeout exceeded')), timeoutMs)),
|
||||
]);
|
||||
}
|
||||
|
||||
console.log('Starting Cron Job for S3 Sync...');
|
||||
|
||||
// Cron: jede volle Stunde
|
||||
cron.schedule('*/5 * * * *', async () => {
|
||||
const ts = new Date().toISOString();
|
||||
console.log(`[${ts}] Running scheduled sync...`);
|
||||
try {
|
||||
await runSyncWithTimeout();
|
||||
console.log('✅ Sync completed successfully.');
|
||||
} catch (err) {
|
||||
console.error('❌ Sync error:', err);
|
||||
}
|
||||
});
|
||||
|
||||
// Optional: initial direkt synchronisieren
|
||||
(async () => {
|
||||
const ts = new Date().toISOString();
|
||||
console.log(`[${ts}] Initial sync run on startup...`);
|
||||
try {
|
||||
await runSyncWithTimeout();
|
||||
console.log('✅ Initial sync completed successfully.');
|
||||
} catch (err) {
|
||||
console.error('❌ Initial sync error:', err);
|
||||
}
|
||||
})();
|
||||
Loading…
Reference in New Issue