【Airflow】构建爬虫任务系统

爬虫脚本太多了需要进行管理一下,领导决定使用airflow
我了解了一下这个平台是用来做任务调度。
是一个ETL工具
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程
在这里插入图片描述
这里是一个github的地址

https://github.com/apache/airflow

这里是官方文档

https://airflow.apache.org/docs/apache-airflow/stable/index.html

这里是我学习的视频资料

https://www.bilibili.com/video/BV19f4y1V7UG/
博主的视频有一些老了,不过也是可以学习的。

先看一下成果吧
在这里插入图片描述

这里是首页记录了,我得dags任务
dags就相当于我得一个爬虫任务,
在这里插入图片描述
我们进入这个dag里面,可以看到
有4个小任务(task)和一task执行的状态,还有一些基本信息。
在这里插入图片描述
可以看每一个task的日志,如果发生问题也可以更方便的定位问题的。
每个dag都有很多配置,比如定时任务,失败重试,自动拉起,报警邮件等功能。
以后再也不用上服务器去看日志了
嘻嘻嘻嘻嘻

conda环境安装

这里需要一个干净的环境,我使用的miniconda
来到 conda网站

https://docs.conda.io/projects/miniconda/en/latest/miniconda-other-installer-links.html

在这里插入图片描述
这里选择linux 的 我是用的是python3.8
然后复制这个链接地址。
在这里插入图片描述
然后我们到服务器上将这个包下好。
执行命令

wget https://repo.anaconda.com/miniconda/Miniconda3-py38_23.9.0-0-Linux-x86_64.sh

在这里插入图片描述
下好之后。
安装好之后,执行

bash Miniconda3-py38_23.9.0-0-Linux-x86_64.sh

然后一直yes 就ok
在这里插入图片描述
conda这里就装好了
在这里插入图片描述
也带着python。然后我们创建一个环境

conda create -n airflow  # 创建环境
conda activate airflow   # 激活环境

这样环境就差不多了
安装一下airflow

 conda install apache-airflow

在这里插入图片描述
这里会依赖很多包
在这里插入图片描述
执行airflow命令,出现这些,说明airflow已经装好了。

配置airflow

找到你得airflow路径,
里面会有一个airflow.cfg文件
在这里插入图片描述
这里是配置dags的文件路径
在这里插入图片描述
这里默认使用的是sqlite数据库,
后续也可以改成mysql

https://blog.csdn.net/qq_43439214/article/details/129898191
这个博主的文章很不错,将airflow的数据库换成了mysql

我这里就先用默认的了,
执行命令

airflow db init 

在这里插入图片描述
出现下面内容说明数据库已经初始化好了。
执行下面命令进行创建用户

airflow users create --username zhang --firstname zhang --lastname zhang --role Admin --email  airflow@example.com

并为其用户设置密码。
配置好了之后
我们开一个会话
在这里插入图片描述
来通过webserver开启 web服务,这里在要访问你得公网地址默认端口是8080
在这里插入图片描述
到这里来到了ui界面输入,你刚刚创建的用户名和密码。
在这里插入图片描述
来到这里了。
这样我们的配置基本就没问题了。

举个例子

来举一个例子,
来写一个dags看一下。

from __future__ import annotations
# [START tutorial]
# [START import_module]
import os
import sys
from datetime import datetime, timedelta
from textwrap import dedent
from airflow.operators.python import PythonOperator, BranchPythonOperator


# The DAG object; we'll need this to instantiate a DAG
from airflow import DAG

# Operators; we need this to operate!
from airflow.operators.bash import BashOperator

# [END import_module]
# [START instantiate_dag]


def first_task():
    print("这里是first_task")
    print("这里是first_task")
    print("这里是first_task")
    print("这里是first_task")
    print("这里是first_task")


def second_task():
    print("这里是second_task")
    print("这里是second_task")
    print("这里是second_task")
    print("这里是second_task")
    print("这里是second_task")


with DAG(
    dag_id="test_airflow",
    default_args={
        'owner': "guapisansan",
        "depends_on_past": True,
        "email": ["177664833@qq.com"],
        "email_on_failure": False,
        "email_on_retry": False,
        "retries": 1,
        "retry_delay": timedelta(minutes=5),
    },
    # [END default_args]
    description="测试一把",
    schedule_interval='0 15 * * *',  # 设置调度间隔为每天下午六点,
    catchup=False,
    start_date=datetime(2023, 10, 23),
    tags=["test"],
) as dag:
    first_task_op = PythonOperator(
        task_id="first_task",
        python_callable=first_task
    )

    second_task_op = PythonOperator(
        task_id="second_task",
        python_callable=second_task
    )

    first_task_op >> second_task_op


我这里给了一段非常简单的代码。
大概意思就是有两个task,分别是first和second 他们对应的也分别是两个python函数
配置了一些参数,如 description dag的简介, 还有一些参数,可以在官方文档查询。

记不记得我们的airflow.cfg文件里面有一个这个参数
在这里插入图片描述
这里就是我们存放所有 dags的路径。一定要是绝对路径
将刚刚写的脚本放到这个路径下,
然后我们在执行命令

airflow dags list

在这里插入图片描述
这里存在我刚刚的创建的test_airflow
这时候我们在创建一个会话
执行命令

airflow scheduler

这是一个调度命令
这时候我们刷新刚刚的web页面
在这里插入图片描述
发现我们dags已经挂到ui页面上了
我们点进去看看
在这里插入图片描述
看到了我们的子任务task 出现了,
现在需要手动触发一下看看结果。
在这里插入图片描述
点击这个trigger按钮
在这里插入图片描述
可以看到这两个task都执行成功了。
右边的框里面有执行时间,还有一些任务的基础信息,
在这里插入图片描述
在这里插入图片描述
点击小图片查看任务执行的日志,
发现我们print打印出来了,
我这里只是举一个小例子先跑起来,可以根据自己的脚本进行配置等等。
airflow是一个非常好用的任务调度工具,相对于数据处理更好,我们当作爬虫管理系统也可以用。
用它将分散的脚本整理,更加方便观察和调度。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用AOP切面实现日志记录功能

系列文章 1.SpringBoot整合RabbitMQ并实现消息发送与接收 2. 解析JSON格式参数 & 修改对象的key 3. VUE整合Echarts实现简单的数据可视化 4. Java中运用BigDecimal对字符串的数值进行加减乘除等操作 5. List<HashMap<String,String>&…

seacms_CNVD-2020-22721_v10.1漏洞分析与复现

seacms 远程命令执行漏洞复现 文章目录 seacms 远程命令执行漏洞复现一、基本信息二、组件简介三、漏洞详情漏洞介绍影响范围危害 四、防御1. 漏洞存在性检测2. 修复建议3. 规避措施4. 漏洞利用检测 五、漏洞复现1. 复现环境2. 漏洞复现 一、基本信息 titlecontentnote漏洞编号…

【Redis】Docker部署Redis数据库

Docker部署Redis数据库 1. Redis介绍2. CentOS 7 安装 & Docker 配置3. 拉取Redis 镜像、创建容器3.1 配置Docker镜像源3.2 拉取Redis 镜像3.3 容器创建 1. Redis介绍 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用…

二、【常用的几种抠图方式一】

文章目录 选框抠图快速选择工具抠图魔棒工具抠图对象选择工具抠图套索工具抠图多边形套索工具抠图磁性套索工具抠图 选框抠图 选框工具抠图适合规则的图形,如下图先使用选框工具框出对象的图轮廓,然后再选择并遮住在里边擦出图形的边缘,根据…

【LeetCode:1465. 切割后面积最大的蛋糕 | 贪心 + 排序】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

安全和便捷:如何将运营商二要素API应用于实名制管理中

引言 随着互联网的快速发展,数字化身份验证和实名制管理变得越来越重要。在金融、电子商务、社交媒体等领域,确保用户身份的安全和准确性至关重要。运营商二要素核验API成为了实名制管理的有力工具,它不仅能够提供高水平的安全性&#xff0c…

常见的云测试策略及重要性

随着云计算技术的快速发展,云服务已经成为了现代应用程序开发和部署的核心组成部分。然而,随之而来的是对云系统性能和质量的不断追求,这使得云测试变得至关重要。本文将探讨云测试的概念、重要性以及一些常见的云测试策略和工具。 一、云测试…

jvm摘要

第 2 章 Java 内存区域与内存溢出异常 2.2 运行时数据区域 程序计数器-线程私有:是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。 程序计数器是唯一一个没有规定任何OutOfMemoryError 情况的区域。 Java 虚拟机栈-线程私有:用于执行Java …

PlantSimulation访问本地Excel文件的方法

PlantSimulation访问本地Excel文件的方法 PlantSimulation访问本地Excel文件的方法PlantSimulation访问本地Excel文件的方法 //Param StatusTable,T_DataTable:object var T_DataTable:object:=DataTable IF NOT isComputerAccessPermittedMESSageBox("计算机访问被阻止,…

如何在群晖NAS中搭建WebDav服务,并实现公网访问

🎬 鸽芷咕:个人主页 🔥 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 1. 在群晖套件中心安装WebDav Server套件1.1 安装完成后,启动webdav服务,并勾选HTTP复选…

uniapp 单选框以及多选框样式更改

radio以及checkbox默认样式不符合自身需求时,根据自身需求更改样式,以下是自身的示例: 单选: 多选: 由于uniapp自身包含了一套默认的样式,所以如果不想全局更改只想在某个单据页面使用的话,就…

22年上半年下午题

第一大题题目 第一大题解答 第一小问 看加工交互和说明来得出实体的名字。如果不太确定,可以多去看几条数据流来确认答案。仔细一点,这分稳啦。 第二小问 需要对应加工结合说明得出数据存储的名称。 一般可以在后面加上表字或者加上信息表。自拟&…

腾讯云轻量应用服务器简介_轻量服务器购买指南

腾讯云轻量应用服务器性能如何?为什么便宜是不是性能不行?腾讯云百科txybk.com从轻量应用服务器的CPU型号、处理器主频、内存、公网带宽、月流量和系统盘多方面来详细测评轻量性能,轻量应用服务器性价比高,并不是性能不行&#xf…

Docker 搭建 LNMP + Wordpress

[TOC](Docker 搭建 LNMP Wordpress 一、项目介绍1.1、项目环境1.2、 服务器环境1.3、 任务需求 二、部署Nginx2.1、建立工作目录2.2、 编写 Dockerfile 脚本2.3、准备 nginx.conf 配置文件2.4、生成镜像2.5、创建自定义网络 三、部署Mysql3.1、建立工作目录3.2、编写 Dockerfi…

springboot+vue基于协同过滤算法的私人诊所管理系统的设计与实现【内含源码+文档+部署教程】

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

18亿欧元大动作,法国瞄准实现量子飞跃

Quobly 正在开发一种容错量子处理器(图片来源:网络) 2021年1月,马克龙总统宣布了法国国家量子计算计划,并将为该技术投入高达18亿欧元。 “量子战略至关重要,”马克龙在量子研究中心巴黎萨克雷大学宣布该…

SpringBoot集成Redis Cluster集群(附带Linux部署Redis Cluster高可用集群)

目录 一、前言二、集成配置2.1、POM2.2、添加配置文件application.yml2.3、编写配置文件2.4、编写启动类2.5、编写测试类测试是否连接成功 一、前言 这里会使用到spring-boot-starter-data-redis包,spring boot 2的spring-boot-starter-data-redis中,默…

小红书内容运营包含哪些,内容种草攻略

在这个社交属性,强势泛滥的年代,兼具了社交和电商两大功能的小红书,已经成为品牌方的兵家必争之地。今天来为大家分享下小红书内容运营包含哪些,内容种草攻略! 1、确定账号定位 这是做好小红书内容运营的第一步。一个有…

2018年亚太杯APMCM数学建模大赛A题老年人平衡能力的实时训练模型求解全过程文档及程序

2018年亚太杯APMCM数学建模大赛 A题 老年人平衡能力的实时训练模型 原题再现 跌倒在老年人中很常见。跌倒可能会导致老年人出现许多并发症,因为他们的康复能力通常较差,因此副作用可能会使人衰弱,从而加速身体衰竭。此外,对跌倒…

MySQL数据库#6

Python操作mysql 在使用Python连接mysql之前我们需要先下载一个第三方的模块 pymysql的模块,导入后再进行操作。 操作步骤:1. 先连接mysql host,port,charset,username password 库,等等。 import pymysql…