linux离线安装celery,执行定时+异步任务

离线安装celery

创建虚拟环境

python3 -m venv testVenv

进入虚拟环境

source testVenv/bin/activate

下载离线包

pip3 download celery[redis] -d lib_python_celery --python-version=3.7.5 --platform manylinux1_x86_64 --only-binary=:all:

直接在linux上安装会报错,提示安装cached-property,所以先下载

pip3 download cached-property -d lib_python_celery --python-version=3.7.5 --platform manylinux1_x86_64 --only-binary=:all:

直接在linux上安装会报错,提示安装importlib-metadata,所以先下载

pip3 download importlib-metadata==4.12.0 -d lib_python_celery --python-version=3.7.5 --platform manylinux1_x86_64 --only-binary=:all:

直接在linux上安装会报错,提示安装typing-extensions,所以先下载

pip3 download typing-extensions> -d lib_python_celery --python-version=3.7.5 --platform manylinux1_x86_64 --only-binary=:all:

安装celery

pip3 install --no-index --find-link=./lib_python_celery celery[redis]

为celery配置redis

# celery_config.py 

import celery

# redis://username:password@host:port/db
backend = 'redis://:pwd@xxx.x.xxx.xxx:6379/4'  # 存放结果
broker = 'redis://:pwd@xxx.x.xxx.xxx:6379/5'  # 存放消息中间件

celery_app = celery.Celery('test_demo', backend=backend, broker=broker, include=['celery_task'])

创建任务(函数),如发邮件函数

# celery_task.py

from celery_config import celery_app

@celery_app.task
def send_email(name):
    print('向{}发送邮件'.format(name))
    time.sleep(5)
    print('向{}发送邮件完成'.format(name))
    return 'success'

创建生产者,如想要发邮件,或定时发邮件

# produce_time.py  或定时发邮件

import datetime
from celery_task import send_email

ctime = datetime.datetime.now()
print(ctime)
utc_ctime = datetime.datetime.utcfromtimestamp(ctime.timestamp())
time_delay = datetime.timedelta(seconds=10)
task_time = utc_ctime + time_delay
result = send_email.apply_async(args=['王五'], eta=task_time)
print(result.id)

# produce_async.py 异步任务

from celery_task import  send_email

for i in range(2):
    res = send_email.delay('张三{}'.format(i))
    print(res.id)
    res2 = send_msg.delay('李四{}'.format(i))
    print(res2.id)

执行celery

celery -A celery_config worker -l info

##执行默认配置的定时任务 celery -A celery_config beat -l info

生产者创建任务

python3 produce_time.py  # 动态创建定时任务
python3 produce_async.py # 创建异步任务

查看redis中数据

# 使用密码登录redis
redis-cli -h 172.16.188.42 -a netnice 

# 切换redis数据库
select 4

# 查看celery产生的结果数据
keys *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值