制作Python调度器的最佳方法
我正在使用 scrapy 0.20 和 python 2.7
问题
哪个是最好的 Python 调度器?
我的需求
我需要每三小时运行一次我的爬虫,也就是一个 Python 脚本。
我考虑过的方案
- 我尝试使用 Windows 7 自带的任务调度功能,效果不错。我可以每三小时运行一次 Python 脚本,但如果我把脚本部署到 Linux 服务器上,就不能使用这个选项了。
- 我用 Quartz-Scheduler 创建了一个 Java 应用程序,运行得很好,但这是一个第三方库,我的经理可能会拒绝使用。
- 我创建了一个 Windows 服务,让它每三小时执行一次脚本,这也能工作,但如果我把 Python 脚本部署到 Linux 服务器上,就不能用这个选项了。
我在询问执行 Python 脚本的最佳实践。
3 个回答
4
我尝试使用Windows 7自带的任务调度功能,效果很好。
所以这对你来说已经很好用了。不错,不需要改动你的脚本来自己做调度工作。
但我可能会把我的Python脚本部署在Linux服务器上,所以可能无法使用这个选项。
在Linux上,你可以使用cron作业来实现这个功能。
另一种方法是让你的脚本一直运行,但在你不需要它工作的三小时内暂停它。这样你就不需要在目标机器上设置任何东西,只需在后台运行脚本,它会一直运行并完成它的工作。
顺便说一下,这正是任务调度程序的工作原理。它们在操作系统启动时就被启动,然后就一直运行,每隔一段时间(大约一分钟)检查一下是否有需要现在执行的任务。如果有,它们就会启动一个新进程来运行这个任务。
所以如果你想在Python中制作这样的调度程序,你只需让它一直运行,然后每隔一段时间(在你的情况下是三小时,因为你只有一个任务),就开始执行你的任务。这可以在一个单独的进程中,也可以在一个单独的线程中,或者通过异步函数间接在一个单独的线程中执行。