我如何 运行 python 每天同时使用调度程序编写脚本?

How do I run python script everyday at the same time with scheduler?

虽然这是一个很笼统的问题, 我想知道的是: 在安排 python 脚本时(例如每天 1:00 下午),我想知道我们是否必须让脚本(或编辑器如 spyder)始终 'open'。这意味着,我必须让 python 总是 运行ning 吗?我避免使用调度程序库,因为人们说 python 脚本没有被杀死,挂起并等待下一个任务。 到目前为止,我一直在做的只是每天自动使用 Windows Scheduler 来 运行 我的脚本(爬虫)(人们说这叫做 'batch process'..)。但是现在我必须在服务器端完成这些工作,而不是在我的本地。

因此,如何使用 python 调度程序库来 运行 我的 python 脚本与 Windows 调度程序一样?

您可以在 linux 中使用 cron。我还使用 cron 来 运行 我的共享托管服务器上的 python 脚本。如果您需要在您的服务器上安装 python 模块,您可能还需要使用 virtualenv 创建一个虚拟环境。根据我的经验,如果你的脚本干净退出,那么你的 python 脚本将被正确杀死或终止,所以你不必担心 python 脚本不会被杀死并消耗你的服务器资源 :D

我会推荐 systemd 定时器。许多人使用 croncrontabs 但它要求您的系统每天 24 小时 运行ning 并且不容易 "debuggable".

我喜欢 systemd 的主要一点是:

  • 所有 systemd 计时器事件都被仔细记录在 systemd 日志中。就像 cron 作业一样,很难检查你的 cron 作业在做什么,它可能会变得一团糟。
  • systemd 计时器是 systemd 服务,具有资源管理、IO CPU 调度的所有功能。
  • 使用它很容易 enable/disable/kill job/etc。通过这样做:

    systemctl enable/disable/start/stop

  • 我喜欢的另一件事是,如果您在不同的时区使用日历和单调时间安排 systemd。以及更多有用的调试功能。

还有更多好的选择:

Jobber 是一个 GO 任务调度器,也是一个比 cron 更强大的工具。它具有带状态的作业执行历史记录,控制作业在失败后是否以及何时再次 运行 并在每次失败时收到通知 运行 或仅关于由于重复失败而被禁用的作业。

Hcron 是一个很好的例子,并且有一些很好的注意事项,例如,单独存储事件,每个事件都在自己的文件中,而不是全部在一个文件中,更多信息在这里:https://expl.info/display/HCRON/Home and documentation is here https://expl.info/display/HCRON/hcron+Guide

希望这对您有所帮助。