2015-04-01 64 views
0

这里的想法 - 有一个网站,我想刮。它每10分钟更新一次,但有时会不同步。重要的是,我所刮的信息就在它更新之前。每次我查看网站时,我都可以抓取剩余时间,直到下次更新。cron作业之间的可变时间(或类似的实现)

有没有办法让一个cron作业 - 在每次迭代之后 - 我可以专门设置等待时间,然后再根据时间(t)的某个变量运行时间(t + 1)迭代?

我不是特别熟悉cron作业 - 我目前超级粗糙的实现只是使用-sleep-。不理想。

回答

0

我遇到了同样的问题,并在抓取网站的程序中实施基本检查。 我只是让crontab调用程序,程序执行检查。 如果数据已经存在,程序就会退出。 它浪费了一点处理资源,但被证明是最可靠的解决方案。

项在crontab中:

*/10 * * * * cd /var/www/vhosts/website/scripts && /usr/bin/python scraper.py 

您可以进行间隔时间短,使适合在网站上更新的窗口。

*/5 * * * * cd /var/www/vhosts/website/scripts && /usr/bin/python scraper.py 

*/5每5分钟执行一次脚本,因此您不必“睡眠”程序。

我建议不要用程序/脚本来操作crontab。

0

您可以使用'at'命令为下次需要运行时设置新作业。

所以,如果你刮告诉你下一次更新是在7分钟内,你可以设定“在”命令来运行“现在+ 6分钟

+0

你能给我提供更多的信息?我在'at'找不到任何文档。你的意思是用程序脚本编辑crontab吗? – Craig 2015-04-01 14:14:39

+0

http://www.computerhope.com/unix/uat.htm – 2015-04-01 14:30:28