大数据开发 Airflow Scheduler源码解读 首先 Scheduler 的 DagFileProcessorAgent 进程定时(dag_dir_list_interval配置指定秒数)扫描 dags 目录下的 py 文件,解析 DAG 生成 DAG 对象以及 TASK 对象写入数据库中。 Scheduler 每秒钟从数据库读取DAG 和 task 的定义、状态、调度规则信息,判断是否执行,如需要执行,将生成 task instance 并发送到 。 yuziyue 7 Jul 2023 · 9 min read
编程语言 Python 脚本实现 Menu 菜单 在操作系统上执行某些脚本时,会有一些 menu 选择菜单, 如果用 Python 来实现,可以尝试用下面的思路试试,毕竟Python的可读性比bash高的可不是一点点。 yuziyue 6 Jul 2023 · 1 min read
编程语言 Python生成素数算法 埃氏筛法(1)先把1删除(现今数学界1既不是质数也不是合数)(2)读取队列中当前最小的数2,然后把2的倍数删去(3)读取队列中当前最小的数3,然后把3的倍数删去(4)读取队列中当前最小的数5,然后把5的倍数删去(5)如上所述直到需求的范围内所有的数均删除或读取 yuziyue 6 Jul 2023 · 1 min read
编程语言 Python单例模式的六种实现 什么叫做单例模式,单例模式是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在,第一次创建实例时是真正的创建了一个实例,而后面创建的实例则是第一次创建的实例的一个引用,是同一个实例。单例模式多种实现,全局变量方式实现 class Singleton: yuziyue 6 Jul 2023 · 2 min read
编程语言 Python生成器 迭代器 可迭代对象 生成器是一种特殊的迭代器,它的返回值不是通过return, 而是用yield,生成器算得上是Python语言中最吸引人的特性之一,是一种特殊的迭代器,不过这种迭代器更加优雅。它不需要再像上面的类一样写__iter__()和__next__()方法了,只需要一个yiled关键字。生成器一定是迭代器, 反之不成立.,生成器有两种实现方法:生成器表达式、生成器函数 yuziyue 6 Jul 2023 · 2 min read
编程语言 Python函数 map() reduce() filter() zip() sort() sorted() map() 函数,将函数作用到序列的每个元素上,可以用列表生成式来实现同样的效果,map()是对列表的每一个元素做相同的操作,reduce() 函数把一个函数作用在一个序列[x1, x2, x3, x4]上, 这个函数必须接收两个参数,reduce() 把结果继续和序列的下一个元素做累积计算, Python3 中,reduce()函数已经被从全局函数中移除了,被放置在fucntools模块里 yuziyue 5 Jul 2023 · 4 min read
编程语言 Python面向对象从入门到精通 面向对象中的类和实例,类 是众多具有相似属性实例的一种抽象,比如老师、学生这是两个类,类是指抽象出的模板。实例 是类的一个个具体体现,比如我们学校有郑老师、张老师, 有小张同学、小余同学,实例是根据类创建出来的具体的对象。每个对象都拥有从类中继承的相同的方法,但各自的数据互相独立,互不影响。 yuziyue 5 Jul 2023 · 22 min read
编程语言 深入浅出 Python 装饰器精通 什么是装饰器:装饰器,顾名思义就是用来做装饰用的,Python中装饰器用来装饰函数,它的好处是不需要对原来的函数做任何修改就可以对函数进行装饰。装饰器的实现:现在要获取函数 a() 的运行时间,可以编写一个装饰器来装饰,下面分三个步骤,一步一步引出装饰器的语法糖 @ 。 yuziyue 5 Jul 2023 · 8 min read
编程语言 Python超时装饰器实现 实现代码 task 任务运行 10 秒钟后停止 @stopit.threading_timeoutable() def worker(name): try: task(name) except stopit.utils.TimeoutException: print('timeout!!!') yuziyue 4 Jul 2023 · 1 min read
编程语言 使用Python安全地修改文件内容 实现思路:同时打开两个文件,将第一个文件的内容读出来进行修改,然后将修改后的行写入第二个文件中。写完后删除原始文件,将第二个文件重命名为原始文件名。操作过程中出现任何错误都会终止修改,对原始文件没有任何影响。 yuziyue 4 Jul 2023 · 1 min read
编程语言 Python正则表达式 以上的匹配都是单行匹配,如果要匹配的字符串是多行,就需要使用多行模式来匹配。 比如当用点(.)匹配任意字符的时候,忘记了点(.)不能匹配换行符。 比如,匹配C语言分割的注释,搜索替换, 返回替换后的字符串,同时返回替换的次数。re.subn(pattern, repl, string[, count]) yuziyue 4 Jul 2023 · 5 min read
大数据开发 Airflow清理logs日志 此时Airflow产生的日志就只有它自己的了,尽管只有Airflow自己产生的日志,但是还是非常多的,假设有一个分钟级的DAG,它里面有10个task,这个DAG每分钟就会产生 10 个目录,每个小时600个目录,一天就会产生 600 * 24 = 14400个目录,这些目录还是挺多了,如果你的task很多,那就更不用说了。 yuziyue 4 Jul 2023 · 2 min read
操作系统 Ghost博客配置QQ邮箱注册登录 浏览器登录QQ邮箱,确保开启 下面 的服务,然后生成授权码,授权码用于配置 ghost 发送邮件。我们直接在 Membership =》 Portal settings =》 Support email address 修改邮箱是不行的,因为它会做一个连接验证,需要我们修改数据库,修改非常简单。 yuziyue 4 Jul 2023 · 1 min read
操作系统 CentOS软件包管理工具之RPM 虽然我们平时都使用 yum 来安装卸载软件,但 yum 也是使用 rpm 的,所以rpm的掌握也必不可少。1、软件包依赖性检测。2、检查软件包冲突检测。3、执行安装前的脚本。4、处理配置文件(不会将原来的配置文件覆盖掉,会给源文件加上后缀.rpmorig)。5、复制程序的文件到相应目录,同时设置文件权限。 yuziyue 3 Jul 2023 · 3 min read
操作系统 CentOS软件包管理工具之YUM rpm的缺点是需要手动解决依赖,而yum可以帮助你自动解决依赖。一. yum配置 1.1 yum主配置文件yum主配置文件,通常不需要关心,二. gpgkey问题,对于epel仓库来说,使用yum install -y epel-release命令的同时,帮我们做了两件事: yuziyue 3 Jul 2023 · 2 min read
大数据开发 Airflow集群原理与实战部署 首先 Scheduler 定时(dag_dir_list_interval配置指定秒数)扫描 dags 目录下的 py 文件,解析 DAG 生成 DAG 对象以及 TASK 对象写入数据库中。Scheduler 每秒钟从数据库读取DAG 和 task 的定义、状态、调度规则信息,判断是否执行,如需要执行,将生成 task instance 并发送到 消息队列。 yuziyue 1 Jul 2023 · 14 min read
编程语言 Scala函数与方法总结 概念: 当⼀个函数⽆需输⼊参数时,我们称这个函数为 “0参函数“,定义⼀个0参函数时,你可以加⼀对空括号,也可以省略掉括号,直接写函数体。方法调⽤(注意:是方法,不是函数):如果你在定义0参方法时加了括号,则在调⽤时可以加括号或者省略括号。但当你在定义0参方法时没加括号,则在调⽤时不能加括号,只能使⽤函数名。 yuziyue 1 Jul 2023 · 5 min read
操作系统 CentOS7搭建DHCP服务 查看MAC地址方法:启动dhcpd服务程序,为主机动态分配一个 IP 地址,这时在DHCP 服务器的日志文件(/var/log/messages)中会保存分配记录,可以从该文件中获取 MAC 地址。编辑配置文件/etc/dhcp/dhcpd.conf,MAC地址绑定配置文件如下。如果需要IP地址和MAC地址绑定,使用如下配置。 yuziyue 30 Jun 2023 · 3 min read