如何使用node.js管理后台(报废)进程

时间:2017-11-09 11:50:35

标签: node.js express web-scraping background-process

我有一个Express应用程序,可从大量网站中提取数据。要做到这一点,目前我必须运行一个路由(例如localhost / scrapdata)的任务,它获取数据并将其存储在我的pgsql数据库中。此任务无限运行。

我有其他路由从我的数据库中获取数据。

用路线开始我的刮擦任务是一个好策略吗?还是有其他策略?

1 个答案:

答案 0 :(得分:0)

这不是一个Express应用程序,而是一个简单的Node.js脚本,它以指定的时间间隔被触发。您要找的是Cron

如果您想保留当前的Express应用程序,那么我建议保留当前的结构,但使用node-schedule之类的内容。所以在另一个文件中,你可以有类似的东西:

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

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

然后在您的主app.js中,只需导入文件即可开始工作:

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

然后在/shutdown之类的其他路线中,您可以这样做:

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

const router = express.Router()

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

这只是一个想法,上面还没有经过测试。

请记住,抓取网站是一个灰色地带。如果他们提供API,请改用它。