2017-11-09 1 views
0

많은 웹 사이트에서 데이터를 추출하는 Express 앱이 있습니다. 그것을하기 위해 현재 데이터를 가져 와서 내 pgsql db에 저장하는 경로 (예 : localhost/scrapdata)로 작업을 실행해야합니다. 이 작업은 무한히 실행됩니다.node.js로 백그라운드 (스크래핑) 프로세스를 관리하는 방법

내 데이터베이스에서 다른 데이터를 가져 오는 경로가 있습니다.

경로로 내 스크래핑 작업을 시작하는 것이 좋은 전략입니까? 아니면 다른 전략이 있습니까?

답변

0

이것은 익스프레스 앱 일 필요는 없지만 지정된 간격으로 실행되는 간단한 Node.js 스크립트입니다. 당신이 찾고있는 것은 Cron입니다.

현재 Express 응용 프로그램을 유지하려면 현재 구조를 유지하는 것이 좋지만, node-schedule과 같은 것을 사용하는 것이 좋습니다. 작업 시작, 메인 app.js에 그런

// my-job.js 
const schedule = require('node-schedule') 

module.exports = schedule.scheduleJob('42 * * * *',() => { 
    console.log('The answer to life, the universe, and everything!') 
}) 

바로 파일을 가져옵니다 : 그래서 다른 파일에, 당신이 뭔가를 할 수 /shutdown 같은 다른 경로에 다음

const express = require('express') 
... 
require('./my-job') 

을, 당신은 할 수 :

const express = require('express') 
const j = require('./my-job') 

const router = express.Router() 

router.get('/shutdown',() => { 
    j.cancel() 
    res.json({ message: 'Canceled.' }) 
}) 

위의 내용은 테스트되지 않았습니다.

웹 사이트 스크래핑은 회색 영역입니다. 그들이 API를 제공한다면 대신 API를 사용하십시오.

관련 문제