【发布时间】:2020-06-24 09:22:53
【问题描述】:
我有一个简单的 Puppeteer 脚本,我想每隔一小时运行一次。我采取了两种方法 1) 使用 setIntervals 2) 使用睡眠功能。我知道可能还有其他方法,例如 cron 作业,并且想问一下解决这个问题的最佳方法是什么。
- 使用设置间隔
const runPuppeteer = () => {
puppeteer.launch({
headless: isHeadless,
args: [
'--no-sandbox',
'--disable-setuid-sandbox'
]
}).then(async browser => {
//Do something...
await browser.close() // close browser after
})}
setInterval(runPuppeteer, 60 * 1000 * 60);
- 使用睡眠
const runPuppeteer = () => {
puppeteer.launch({
headless: isHeadless,
args: [
'--no-sandbox',
'--disable-setuid-sandbox'
]
}).then(async browser => {
while(true){
//Do something...
sleep.sleep(60 * 60)
}
})}
由于某种原因,当我采用 2) sleep 方法并查看 htop 时,有多个线程和任务(我认为这主要是由于我的代码..)
【问题讨论】:
-
宁可去
setTimeout(yourFunction, hour); -
对不起,setTimeout 不是只执行一次而不是间隔吗?
-
您还可以使用 AWS lambda + Cloudwatch 事件等服务来运行您的任务
-
可以使用递归
setTimeout。 stackoverflow.com/questions/7188145/…
标签: javascript puppeteer