我在python 2.7上使用scrapy 0.20
什么是最好的python调度程序。
我需要每3小时运行一次蜘蛛,这是一个python脚本。
我在询问解雇python脚本的最佳做法
答案 0 :(得分:4)
我尝试使用Windows 7附带的Windows调度程序功能,但效果很好。
所以这对你来说很好。很好,无需更改脚本来自行安排工作。
但我可能会在Linux服务器上部署我的python脚本,因此我可能无法使用此选项。
在Linux上,您可以使用cron jobs来实现此目的。
另一种方法是简单地保持脚本一直运行,但暂停三小时你什么都不做。所以你不需要在目标机器上设置任何东西,只需要在后台运行脚本,它就会继续运行并完成它的工作。
这正是作业调度程序的工作方式。它们在操作系统启动时提前启动,然后它们只是一直运行,并且每隔一小段时间(大约一分钟左右)就会检查列表中是否有任何需要立即运行的作业。如果是这种情况,他们会产生一个新流程并运行这个工作。
因此,如果您想在Python中制作这样的调度程序,您只需要让它永远运行,并且每隔一段时间(在您的情况下为3小时,因为您只有一个工作),您就可以开始工作了。这可以在单独的进程中,在单独的线程中,也可以在使用异步函数的单独线程中间接进行。
答案 1 :(得分:4)
部署/安排scrapy项目的最佳方法是使用scrapyd服务器。
您应该安装scrapyd。
sudo-apt get install scrapyd
您将项目配置文件更改为以下内容:
[deploy:somename]
url = http://localhost:6800/ ## this the default
project = scrapy_project
您在scrapyd服务器下部署项目:
scrapy deploy somename
您将/etc/scrapyd/conf.d/default-000中的轮询间隔更改为3小时(默认为5秒):
poll_interval = 10800
您可以将蜘蛛配置为:
curl http://localhost:6800/schedule.json -d project=scrapy_project -d spider=myspider
您可以使用网络服务来监控您的工作:
http://localhost:6800/
PS:我只是在ubuntu下测试它所以我不确定是否存在Windows版本。如果没有,您可以安装带有ubuntu的VM来启动蜘蛛。
答案 2 :(得分:1)