实验7:Python使用apscheduler定时采集任务实战

【实验内容】

本实验主要介绍在Django框架中使用APScheduler第三方库实现对数据的定时采集。

【实验目的】

1、掌握APScheduler库的使用;

2、学习在Django中实现多个定时任务调度;

【实验步骤】

步骤1 Apscheduler简介与特点

步骤2 Apscheduler基本概念

步骤3 在Django中实现多个定时任务调度

 

步骤1:Apscheduler简介与特点

(1) 简介

APScheduler(Advanced Python Scheduler)是一个用于 Python 的灵活的定时任务调度库。它允许您在应用程序中安排执行函数或方法,以便在指定的时间间隔、日期、天或其他规则触发它们。

(2) 特点

  • 多种触发器:APScheduler支持多种触发器,包括日期时间触发、定时间隔触发、固定日期触发、定时器触发和 Cron 触发等。这使得您可以为不同的任务定义不同的触发规则。
  • 可扩展性:它允许您创建多个定时任务,定义自己的触发器和任务,并将其集成到您的应用程序中。
  • 并发控制:APScheduler可以管理并发执行的任务,确保任务不会重叠执行。
  • 持久化存储:您可以将任务存储在持久化存储中,以便在应用程序重启时保持任务状态。
  • 灵活性:APScheduler提供了多种方式来调度任务,如在单线程应用程序中,通过线程池或进程池,以及在分布式系统中。
  • 轻量级:APScheduler是一个轻量级库,易于集成到各种类型的 Python 应用程序中。
  • 支持异步:它还支持在异步应用程序中使用,例如基于asyncio的Python应用。

 

步骤二:Apscheduler基本概念

(1) 调度器(scheduler)

/*========================================================================================================*/

使用示例:

***********************************************************************

(2) 作业存储(job store)

/*===================================================================================================*/

(3) 执行器(executer)

​ 在APScheduler中,执行器(Executor)是用于执行调度的组件。执行器负责管理调度的任务,并决定何时以及如何执行它们。APScheduler提供了不同类型的执行器,以满足不同的需求。

/*===============================================================================================*/

使用示例:

***********************************************************************

(4) 触发器(trigger)

****************************************************************************

步骤3:在Django中实现多个定时任务调度

(1) 安装

pip install django-xxxxx

(2) 注册app

在settings.py中注册按如下图所示注册app。

***************************************************************************

 (3) 数据库连接配置

/*==================================================================================================*/

***************************************************************************

运行`python manage.py migrate`会自动生成下列2表:

Python网络爬虫实战实验7:Python使用apscheduler定时采集任务实战创建超级用户后可直接进入后台管理任务调度,如下图所示:

**********************************************************************

 (4) 创建定时任务

以湖北为例

**********************************************************************

导入BackgroundScheduler类,这是APScheduler中用于在应用程序的后台运行的调度器。通过调用start()方法,启动后台调度器。使用了DjangoJobStore作为任务存储(jobstore)。/*==============

  • */

    *********************************************************************

    使用 ThreadPoolExecutor并发执行多个任务,提高效率。在上述代码中,并发执行了两个任务

    /*==============================================================*/

    ***********************************************************************

    这是一个运行指定目录文件下的采集数据脚本的函数 run_program。

    命令行执行:/*

  • */

    重试机制:使用 retries 变量实现了一个简单的重试机制,即如果命令执行失败,会进行最多两次的重试。这有助于应对一些暂时性的问题。

    错误处理: /*

=========*/

**************************************************************************

将文件运行的结果存储到数据库中

**************************************************************************

  (5) 定时运行结果

定时任务执行记录,如下图所示Python网络爬虫实战实验7:Python使用apscheduler定时采集任务实战

脚本执行记录

**********************************************************************************

相关新闻

联系我们

027-87870986

在线咨询:点击这里给我发消息

邮件:931234110@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息