Python网络爬虫实战——实验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表:在这里插入图片描述创建超级用户后可直接进入后台管理任务调度,如下图所示:
-**********************************************************************

(4) 创建定时任务
以湖北为例
-**********************************************************************
导入BackgroundScheduler类,这是APScheduler中用于在应用程序的后台运行的调度器。通过调用start()方法,启动后台调度器。使用了DjangoJobStore作为任务存储(jobstore)。/==============
===========================================================================================
/
-*********************************************************************
使用 ThreadPoolExecutor并发执行多个任务,提高效率。在上述代码中,并发执行了两个任务
/==============================================================/


这是一个运行指定目录文件下的采集数据脚本的函数 run_program。
命令行执行:/==================================
=======
/
重试机制:使用 retries 变量实现了一个简单的重试机制,即如果命令执行失败,会进行最多两次的重试。这有助于应对一些暂时性的问题。
错误处理: /===================================
=========
/
-**************************************************************************
将文件运行的结果存储到数据库中
-**************************************************************************

(5) 定时运行结果
定时任务执行记录,如下图所示在这里插入图片描述脚本执行记录
-**********************************************************************************

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/651077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux进程间通信(IPC)机制之一:管道(Pipes)详解

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:Nonsense—Sabrina Carpenter 0:50━━━━━━️💟──────── 2:43 🔄 ◀️ ⏸ ▶️ …

Scrapy IP()类 编程指南(基础)

Scrapy IP()类 编程指南(基础) IP简介 工欲善其事,必先利其器,在聊Scapy IP类时,我们先要了解IP是什么。 IP指的是Internet Protocol(互联网协议)的数据包。Internet Protocol是互联网上用于在…

SpringBoot系列之JPA实现按年月日查询

SpringBoot系列之JPA实现按年月日查询 通过例子的方式介绍Springboot集成Spring Data JPA的方法,进行实验,要先创建一个Initializer工程,如图: 选择,需要的jdk版本,maven项目 选择需要的maven配置&#x…

pytest参数化

一、pytest.mark.parametrize介绍 pytest.mark.parametrize(argnames, argvalues, indirectFalse, idsNone)参数说明: argnames: 一个或多个参数名,用逗号分隔的字符串,如"arg1,arg2,arg3",参数名与用例入参数一致。 a…

Android读写文件,适配Q以上

Android Q升级了文件系统,访问文件不仅仅是说动态权限了,有各种限制。权限什么的就不赘述了,下面介绍一下在10以上的系统中访问文件。 首先是打开文件管理器 /*** 打开文件管理器 存储卡和外接U盘都可以访问*/public void openFileManager()…

什么是JSON

什么是JSON JSON:JavaScript Object Notation 【JavaScript 对象表示法】 JSON 是存储和交换文本信息的语法。类似 XML。 JSON采用完全独立于任何程序语言的文本格式,使JSON成为理想的数据交换语言S 为什么需要JSON 提到JSON,我们就应该和…

代码块(Java)

代码块是类的成分之一,分为静态代码块和实例代码块 1.静态代码块:static{} 类加载时会自动执行一次,可以完成类的初始化,比如初始化赋值 2.实例代码块:{} 每次创建对象时,执行实例代码块,会…

探索圆的面积计算器:神秘数学背后的无限魅力

导语:自古以来,圆形在人类文明中扮演着重要角色。从建筑、工程设计到日常生活,圆的面积都是一个不可或缺的元素。本文将带您深入了解圆的面积,从起源、应用场景到计算方法,让您领略数学的无穷魅力。 一、圆的面积是什…

java金额数字转中文

java金额数字转中文 运行结果: 会进行金额的四舍五入。 工具类源代码: /*** 金额数字转为中文*/ public class NumberToCN {/*** 汉语中数字大写*/private static final String[] CN_UPPER_NUMBER {"零", "壹", "贰",…

CMake构建Qt工程

在https://blog.csdn.net/fengbingchun/category_12172633.html 上有直接通过vs2022建的Console、Widgets、Quick三个工程,这里增加通过CMake构建。 build.sh内容如下: #! /bin/bashif [ $# ! 1 ]; thenecho "Error: requires one parameter: Rele…

基于springboot网上书城交易平台源码和论文

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括网上书城管理系统的网络应用,在国外网上书城管理系统已经是很普遍的方式,不过国内的书城管理系统可能还处于起步阶段。网上书城管理系统具有网上书城信…

Spring扩展点在微服务应用(待完善)

ApplicationListener扩展 nacos注册服务, 监听容器发布事件 # 容器发布事件 AbstractAutoServiceRegistration#onApplicationEvent # 接收事件吗,注册服务到nacos NacosServiceRegistry#register Lifecycle扩展 #订阅服务实例更改的事件 NamingService#…

【开源】基于JAVA的学生综合素质评价系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生功能2.2 教师功能2.3 教务处功能 三、系统展示四、核心代码4.1 查询我的学科竞赛4.2 保存单个问卷4.3 根据类型查询学生问卷4.4 填写语数外评价4.5 填写品德自评问卷分 五、免责说明 一、摘要 1.1 项目介绍 基于J…

【数据结构】栈、队列、数组、列表

数据结构是什么? 数据结构是计算机存储、组织数据的方式 是指数据相互之间是以什么方式排列在一起的。 数据结构是为了更加方便的管理和使用数据,需要结合具体的业务场景来进行选择。一般情况下,精心选择的数据结构可以带来更高的运行或者…

MongoDB日期存储与查询、@Query、嵌套字段查询实战总结

缘由 MongoDB数据库如下: 如上截图,使用MongoDB客户端工具DataGrip,在filter过滤框输入{ profiles.alias: 逆天子, profiles.channel: },即可实现昵称和渠道多个嵌套字段过滤查询。 现有业务需求:用Java代码来查询…

LeetCode.2861. 最大合金数

题目 题目链接 分析 这道题目一定要多读几遍,才能理解。 大意就是你有钱budget 和 库存stock的金属零件,让你从一堆机器里面选择一种机器可以合成最多金属的数量是多少,这些机器合成金属需要的零件数目是不一样的,composition…

程序员必备!10款实用便捷的Git可视化管理工具

前言 俗话说得好“工欲善其事,必先利其器”,合理的选择和使用可视化的管理工具可以降低技术入门和使用的门槛。我们在团队开发中统一某个开发工具的使用能够大大降低沟通成本,提高协作沟通效率。今天给大家分享10款实用便捷的Git可视化管理工…

(免费领源码)java#SSM#mysql疫情时期人员流调平台69124-计算机毕业设计项目选题推荐

目 录 摘要 1 绪论 1.1研究意义 1.2开发现状 1.3系统开发技术的特色 1.4 ssm框架介绍 1.5论文结构与章节安排 2 疫情时期人员流调平台系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.2.2数据修改流程 2.2.3数据删除流程 2.3 系统功能分析 2.3.1…

VisionMaster图像拼接功能实现

由于硬件或安装环境限制,单个相机视野无法覆盖整个视野,但实际应用需要全视野图像时,可以拍摄物体的多个部分拼接成一张整图。VM提供图像拼接工具对图像进行拼接。 使用标定图进行标定建模是最重要的一步,成功标定后可以将图像无…

python222网站实战(SpringBoot+SpringSecurity+MybatisPlus+thymeleaf+layui)-帖子管理实现

锋哥原创的SpringbootLayui python222网站实战: python222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火爆连载更新中... )_哔哩哔哩_bilibilipython222网站实战课程视频教程(SpringBootPython爬虫实战) ( 火…