APSchedular Python示例您可以使用Advanced Python Scheduler (APScheduler) Python包将Python代码安排在稍后运行,一次或经常运行。您可以根据需要灵活地添加新任务并删除旧任务。 如果将作业放入数据库中,它们将承受调度程序重新启动并保持其状态。在调度器关闭时应该完成的所有任务将在重新启动时完成。 APScheduler的主要优点之一是它可以在多个平台上使用,并且可以取代Windows Task Scheduler或cron守护进程。此外,在撰写本文时,它正在发展中。 APScheduler提供这三种标准计时方法:
设置:安装过程非常简单,易于操作。因为apscheduler是一个内置包,所以您应该已经有了它。让我们试一试,如果包还没有安装,那么就安装它。激活虚拟环境后,执行以下命令: 如果没有任何输出,不要惊慌;它只是暗示包没有安装。如果我们执行以下操作,安装它很简单: 基本API:为了使这一课简单明了,我将简单地介绍APScheduler的四个主要组件中的两个:
用于添加或删除作业的关键元素是调度程序。大多数用例不需要一个以上的调度器。根据编程环境的不同,许多调度器类型被合并到模块中。 例如: BlockingScheduler, AsyncIOScheduler, TornadoScheduler, QtScheduler等。 在这节课中,我们将使用BackgroundScheduler,因为我们希望任务在Flask服务器的后台执行。 接下来是包含调度逻辑的触发器组件。每次向调度程序添加作业时;您必须定义触发器,以指定下一次应该在何时运行该触发器。APScheduler中有三个内置触发器:
稍后,我们将使用interval和cron触发器来说明它们之间的区别。让我们看看如何编写三行代码来构造我们自己的任务调度作业。 第一行:导入根据我们计划使用的调度程序,我们必须导入所需的组件。在这个实例中,我们将导入BackgroundScheduler。 第二行:调度程序在创建BackgroundScheduler时,daemon参数应该设置为True。通过这样做,我们可以在退出Flask程序时杀死线程。 第三行:增加一个工作add_job函数将用于向调度程序添加作业。有三个主要的可配置参数。
看一下下面这行代码,它每五秒钟更新一次调度程序的可用作业列表。 第四行:启动调度器:完成设置后,使用下面的行启动调度器: 如果你在Python shell中执行代码,你应该能够看到以下输出: 如果你按Ctrl-C取消KeyboardInterrupt,调度器将继续运行,直到你按Ctrl-Z离开Python Shell或使用关机函数。 与Flask的集成 APScheduler可以简单地集成到Flask中,没有任何问题。创建一个新的名为test.py的Python文件来测试它。 进口 工作职能: 这次我们将使用一个真实的函数,而不是使用匿名函数。在新形成的传感器功能中,输入如下代码。count变量只是作为一个示例来显示到目前为止我们计划了多少个作业。 调度程序: 除了使用cron触发器而不是间隔之外,我们将以与前面阶段相同的方式定义调度程序。 相反,我们将指定minute选项,以便操作每分钟运行一次。星号符号应用于这种情况。如果给它赋值5,它将每小时在5分钟点被调用一次。 参数args可用于在添加具有形参的函数时传入形参。它将接受元组或列表。假设我们之前使用的函数有两个参数。add job函数的调用方式如下: 瓶 剩下的任务是定义运行Flask服务器所需的函数。 打开该目录后,将其移动到控制台中test.py文件的位置。运行命令行: 传感器功能可以很容易地改变,以执行您想要的职责。例子包括:
只需几行代码就可以完成各种用例。 触发例子:本部分将给出几个示例,向您展示如何根据自己的需求定制触发器。 间隔:一些最有用的配置选项包括:
下面的代码将使它每两小时运行一次: 为了保证作业只在开始和结束时间戳之间执行,可以使用start和end参数。 Cron:为了保证作业只在开始和结束时间戳之间执行,可以使用start和end参数。 因为它提供了更多的设置选择,所以cron触发器要复杂得多。
与interval触发器不同,参数不像结束时那样具有,而是以字符串或int形式接受输入。以下表达式可用于从年到秒的字符串输入字段。 时间表在“2月、3月、4月、11月和12月”的每个第三个星期五“凌晨2点、3点、4点和5点”工作: 时间表在每个月的最后一个星期天运行任务: 时间表每小时运行一次任务: 结合触发器:根据您的用例,如果情况需要,可以使用AndTrigger和OrTrigger来组合触发器。 将作业安排为每三小时运行一次(仅在周一和周二): 结论安装APScheduler模块是我们的第一步。 然后,对该模块的两个基本部分——调度器和触发器进行了深入研究。我们还对调度程序的四行Python Shell实现进行了测试。 接下来的步骤是将它包含到一个基本的Flask服务器中。我们没有使用匿名函数,而是使用了实函数。 接着,我们学习了几个配置触发器组件参数的示例。我们也可以使用AndTrigger和OrTrigger混合使用interval和cron触发器。
下一个话题
Oserror Python
|