celery初探

我们用的是gearman,但对于类似功能的celery也要做一下调研。

Celery

celery:celery是一个分布式的任务调度模块,可以支持多台不同的计算机执行不同的任务或者相同的任务。

安装

版本要求:

Version Requirements

Celery version 5.0 runs on

Python ❨3.6, 3.7, 3.8❩

PyPy3.6 ❨7.3❩

Celery 4.x was the last version to support Python 2.7, Celery 5.x requires Python 3.6 or newer.


If you’re running an older version of Python, you need to be running an older version of Celery:

Python 2.7 or Python 3.5: Celery series 4.4 or earlier.

Python 2.6: Celery series 3.1 or earlier.

Python 2.5: Celery series 3.0 or earlier.

Python 2.4 was Celery series 2.2 or earlier.

Celery is a project with minimal funding, so we don’t support Microsoft Windows. Please don’t open any issues related to that platform.

由于我们的python版本有3.5和3.6,起初,为稳妥起见,还是安装了Celery4.4。

但实测下来,发现linux下py3.5对Celery4.4的支持依然不好,出各种问题,所以,最终还是切到py3.6,Celery版本使用最新的5.0.5

hello world

celery worker端代码:

import time
from celery import Celery

app = Celery('tasks', broker='redis://xx.xx.xx.xx:6379/0')

@app.task
def sendmail(mail):
    print('sending mail to %s...' % mail['to'])
    time.sleep(2.0)
    print('mail sent.')

windows上执行直接报错:not enough values to unpack (expected 3, got 0),google之,发现是celery4以后对windows的支持不好。改到linux上执行就没问题了。

注意:启动celery worker会提醒你安装redis库,因我们使用redis来作为消息队列。用

pip3 install redis

安装好即可。

celery client端代码:

from celery_task import sendmail
sendmail.delay(dict(to='celery@python.org'))

执行完成,worker端打印日志:

[tasks]
  . celery_task.sendmail

[16:14:03,227: INFO/MainProcess] Connected to redis://xx.xx.xx.xx:6379/0
[16:14:03,256: INFO/MainProcess] mingle: searching for neighbors
[16:14:04,306: INFO/MainProcess] mingle: all alone
[16:14:04,364: INFO/MainProcess] celery@localhost.localdomain ready.
[16:15:02,842: INFO/MainProcess] Received task: celery_task.sendmail[940ddec2-6a74-437c-9f4c-26c07849cd8f]  
[16:15:02,846: WARNING/ForkPoolWorker-128] sending mail to celery@python.org...
[16:15:04,848: WARNING/ForkPoolWorker-128] mail sent.

从上述例子看出,celery跟gearman还是很像的,只不过,celery写起来更像RPC,而gearman使用起来更像通信协议。gearman有自己的server做中转,供client提交任务、供worker抓取任务,celery则依赖三方队列(如redis或mq)中转。gearman在client–server、server–worker间使用自己的通信协议,celery则使用mq的API。

Airflow的部署可以采用多节点(集群)部署的方式,这种方式适用于对稳定性要求较高的场景。在多节点部署中,可以将Airflow的守护进程分布在多台机器上运行,以实现高可用性。[1] 具体的部署步骤如下: 1. 确保已经安装了CentOS 7.2操作系统,并满足以下版本要求:Airflow 1.9、Python 2.7.5、Celery 4.3.0、Redis 4.1.0和MySQL 5.7。 2. 执行以下命令安装Airflow:`pip install apache-airflow`. 3. 执行以下命令初始化Airflow的数据库:`airflow db init`. 4. 启动Web服务:`airflow webserver --port 8080 -D`. 5. 启动调度器:`airflow scheduler -D`. 如果需要重新启动Airflow,可以执行以下步骤: 1. 杀死所有正在运行的Airflow进程:`killall airflow`. 2. 运行以下命令初始化数据库:`airflow db upgrade`. 3. 启动Web服务:`airflow webserver --port 8080 -D`. 4. 启动调度器:`airflow scheduler -D`. 对于MySQL数据库的部署,您可以使用以下步骤: 1. 登录MySQL数据库,执行以下命令创建Airflow数据库:`create database airflow;`. 2. 创建Airflow用户并设置密码:`create user 'airflow'@'%' identified by '123456';`. 3. 授予Airflow用户对所有数据库的所有权限:`grant all privileges on *.* to 'airflow'@'%';`. 4. 刷新权限:`FLUSH PRIVILEGES;`. 请注意,以上步骤仅为Airflow部署和数据库配置的基本步骤,具体的部署配置可能会因环境和需求而有所不同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [airflow初探(一)-- 安装和部署](https://blog.youkuaiyun.com/hpugym/article/details/89476480)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [airflow 2.2.3部署(2022年最新版+史上最完整版)](https://blog.youkuaiyun.com/small_fash/article/details/123254349)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值