deeplXnodeless / server.js
MISASI's picture
Update server.js
00cafc8 verified
raw
history blame
2.05 kB
const express = require('express')
const bodyParser = require('body-parser')
const { translate } = require('./translate')
const cors = require('cors')
const fs = require('fs')
const app = express()
const PORT = 7860
app.use(cors({ origin: '*' }))
app.use(bodyParser.json())
let delay = 1500
const delayIncrement = 100
const maxDelay = 5000
let currentTranslations = 0
function delayFileTermination(delay) {
if (fs.existsSync('delay.txt')) {
delay = parseInt(fs.readFileSync('delay.txt', 'utf8'))
}else{
fs.writeFile('delay.txt', `delay:{$delay}`, function(err){
if(err = null){
console.log('success')
}else{
console.log('fail')
}
})
}
}
console.log('File system loaded')
app.post('/translate', async (req, res) => {
console.log('Translate start');
currentTranslations++;
const { text, source_lang, target_lang } = req.body;
try {
await new Promise(resolve => setTimeout(resolve, delay));
const result = await translate(text, source_lang, target_lang);
const responseData = {
alternatives: result.alternatives,
code: 200,
data: result.text,
id: Math.floor(Math.random() * 10000000000),
method: 'Free',
source_lang,
target_lang,
};
res.json(responseData);
console.log(`"${text}" -> "${result.text}"`);
} catch (error) {
console.error(`Translation failed: ${error}`);
delay += 100; // delay 증가
delayFileTermination(delay);
console.log(`ν˜„μž¬ Delay νƒ€μž„: ${delay}ms`);
} finally {
currentTranslations--; // λ²ˆμ—­ μ²˜λ¦¬κ°€ λλ‚˜λ©΄ κ°μ†Œ
}
});
app.get('/', (req, res) => {
const delayMessage = fs.existsSync('delay.txt') ? fs.readFileSync('delay.txt', 'utf8') : '0'
const statusMessage = `μ„œλ²„κ°€ κ΅¬λ™λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ λ”œλ ˆμ΄ μ‹œκ°„μ€ ${delay}ms이며, ν˜„μž¬ 처리 쀑인 λ²ˆμ—­ μš”μ²­ μˆ˜λŠ” ${currentTranslations}κ±΄μž…λ‹ˆλ‹€.`
res.send(statusMessage)
})
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`)
})