File size: 2,054 Bytes
c791e2a
 
 
 
 
 
 
 
 
 
 
cae0d02
c791e2a
 
 
12d5b92
e01be37
 
 
 
00cafc8
e01be37
 
 
 
 
 
 
12d5b92
 
e01be37
 
12d5b92
 
 
00cafc8
 
12d5b92
00cafc8
12d5b92
 
00cafc8
12d5b92
00cafc8
12d5b92
00cafc8
12d5b92
00cafc8
 
12d5b92
 
 
00cafc8
 
 
8ab856a
c791e2a
00cafc8
 
 
 
c791e2a
00cafc8
12d5b92
00cafc8
12d5b92
 
c791e2a
e01be37
c791e2a
7b3ad18
c791e2a
12d5b92
 
c791e2a
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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}`)
})