avoid excessive vpn restarts

This commit is contained in:
localhost 2026-05-24 12:56:07 +02:00
parent 62a99c028f
commit b8a2a5365a
1 changed files with 30 additions and 6 deletions

View File

@ -23,6 +23,8 @@ ffmpeg.setFfmpegPath('/usr/local/bin/ffmpeg')
const maxRetries = 5
const innertubePool = createInnertubePool(parseInt(Bun.env.INNERTUBE_POOL_SIZE || '4'))
let consecutiveFailures = 0;
app.get('/health', async (req, res) => {
try {
const urls = ['/video/sRMMwpDTs5k', '/channel/UCEcryET60dO0HgVGjZ6WnXA', '/videos/UCEcryET60dO0HgVGjZ6WnXA']
@ -38,15 +40,37 @@ app.get('/health', async (req, res) => {
const isHealthy = results.every(result => result.status === 'healthy');
if (isHealthy) {
res.status(200).json({ message: 'All endpoints are healthy', results });
consecutiveFailures = 0;
res.status(200).json({ message: 'All endpoints are healthy', results, consecutiveFailures });
} else {
res.status(500).json({ error: 'Health check failed', results });
switchIps()
consecutiveFailures++;
console.log(`Health check failed. Consecutive failures: ${consecutiveFailures}`);
if (consecutiveFailures === 3) {
console.log('3 consecutive failures reached. Switching IP in background...');
switchIps().catch(err => console.error('Failed to switch IP:', err));
}
if (consecutiveFailures >= 6) {
res.status(500).json({ error: 'Health check failed', results, consecutiveFailures });
} else {
res.status(200).json({ message: 'Health check failing but within allowed threshold', results, consecutiveFailures });
}
}
} catch (error:any) {
console.error('Health check failed:', error.message);
switchIps()
res.status(500).json({ error: 'Health check failed', results: [], errorMessage: error.message });
consecutiveFailures++;
console.error(`Health check error. Consecutive failures: ${consecutiveFailures}. Error:`, error.message);
if (consecutiveFailures === 3) {
console.log('3 consecutive failures reached (from error). Switching IP in background...');
switchIps().catch(err => console.error('Failed to switch IP:', err));
}
if (consecutiveFailures >= 6) {
res.status(500).json({ error: 'Health check failed', results: [], errorMessage: error.message, consecutiveFailures });
} else {
res.status(200).json({ message: 'Health check failing but within allowed threshold (error)', errorMessage: error.message, consecutiveFailures });
}
}
})