2017-11-09 5 views
0

多くのWebサイトからデータを抽出するExpressアプリケーションがあります。これを行うには、現在、データを取得してpgsql dbに格納するルート(例:localhost/scrapdata)でタスクを実行する必要があります。このタスクは無限に実行されています。node.jsを使用してバックグラウンド(廃棄)プロセスを管理する方法

私のデータベースからデータを取得するための他のルートがあります。

ルートを使用してスクレイピングタスクを開始するのはよい戦略ですか?それとも別の戦略がありますか?

答えて

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を提供している場合は、代わりにAPIを使用してください。

関連する問題