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.hqwc.cn/news/433683.html

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

相关文章

HTML新手教程

HTML入门 教程:【狂神说Java】HTML5完整教学通俗易懂_哔哩哔哩_bilibili 一.初识HTML HyperTextMarkupLanguage(超文本标记语言) 超文本包括:文字、图片、音频、视频、动画。 HTML5的优势 世界知名浏览器厂商对HTML5的支持市场的…

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

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

研发日记,Matlab/Simulink避坑指南(六)——字节分割Bug

文章目录 前言 背景介绍 问题描述 分析排查 解决方案 总结归纳 前言 见《研发日记,Matlab/Simulink避坑指南(一)——Data Store Memory模块执行时序Bug》 见《研发日记,Matlab/Simulink避坑指南(二)——非对称数据溢出Bug》…

2024年预制菜行业市场发展趋势分析(2021-2023年预制菜行业数据分析)

近期,老干妈被称为预制菜、预制菜国标报送稿出炉等事件再次引起大众对于预制菜市场的讨论。随着国家对预制菜审核标准的严格化,预制菜市场未来走向将会如何?鲸参谋带大家从数据角度来了解。 首先来看下预制菜市场的行业发展情况。 根据鲸参…

将word公式转成mathtype公式

将word公式转成mathtype公式 1. 转换方法2. 可能出现的错误解决方法 1. 转换方法 1)选中一个word公式/直接全文word公式转换 2)点击Mathtype转换公式 2. 可能出现的错误 The style sheet (omml2mml.xsl) required for this operation was notfound …

Kubernetes Ingress暴露应用的工作流程

文章目录 一、Igress是什么二、安装Igress Controller三、Service NodePort模式暴露Ingress Controller四、创建ingress 进行访问查看ingress controller生成的规则(两种类型通用) 五、HostNetwork模式暴露Ingress Controller总结: 一、Igress是什么 一般负载均衡器…

文件上传之大文件分块上传进度控制处理

在分块上传内容结束以后的事件监听,我们会实现 unlinkSync 删除临时文件操作,那么试想一下,在这个事件监听中,我们是否可以通过totalChunks以及currentChunk获取当前上传的进度情况呢? 后端 upload上传接口&#xff…

YOLOv8优化策略:注意力系列篇 | non-local自注意力,助力小目标检测

🚀🚀🚀本文改进:non-local自注意力,助力小目标检测 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1.原理介绍 论文:https://arxiv.org/pdf/1711.07971.pdf 摘要:卷积和循环运算都是一次处理一个…

2024最新幻兽帕鲁服务器多少钱一个?

幻兽帕鲁服务器多少钱?价格便宜,阿里云4核16G幻兽帕鲁专属服务器32元1个月、66元3个月,4核32G配置113元1个月、339元3个月;腾讯云4核16G14M服务器66元1个月、277元3个月、1584元一年。阿腾云atengyun.com分享阿里云和腾讯云palwor…

【机组】基于FPGA的32位算术逻辑运算单元的设计(EP2C5扩充选配类)

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《机组 | 模块单元实验》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 一、实验目的 二、实验要求 …

搞定App关键词和评论

从关键词优化的三大基本概念走起! 关联性 优化师一般如何选择关联性高的关键词呢? 主要思路如下:品牌词-关联词-竞品词-竞品关键词,优先级从前到后依次降低,通过ASO优化工具筛选出合适的关键词。做ASO有一个好处就是…

力扣(LeetCode)227. 基本计算器 II

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。 注意:不允许使用任何将字符串作为数学表达式计算的内置函数&#…