celery的配置和使用

在Ubuntu系统中,配置Celery涉及安装依赖、启动RabbitMQ服务器,并创建配置文件。完成配置后,可以通过Celery执行异步任务,如在tasks.py中定义任务并启动worker。此外,还可实现定时任务,如在time_task.py中设置不同频率的任务执行,如每隔10秒、30秒和每周一早上7:30。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:ubuntu环境

下载必要的包:

pip install celery

apt-get install erlang

apt-get install rabbitmq-server

开启rabbitmq-server

service rabbitmq-server start

vi /var/log/rabbitmq/rabbit\@ubuntu.log

找到config file(s)这一行,默认应该是个None,修改为/etc/rabbitmq/rabbitmq.config

显示没有找到配置文件.需要我们自己创建这个文件

cd /etc/rabbitmq/
vi rabbitmq.config
编辑内容如下
[{rabbit, [{loopback_users, []}]}].
这里的意思是开放使用,rabbitmq默认创建的用户guest,密码也是guest,这个用户默认只能是本机访问,localhost或者127.0.0.1,从外部访问需要添加上面的配置。

保存配置后重启服务:

service rabbitmq-server restart

此时就可以从外部访问了,但此时再看log文件,发现内容还是原来的,还是显示没有找到配置文件,可以手动删除这个文件再重启服务,不过这不影响使用

rm rabbit@localhost.log 

service rabbitmq-server restart

这时查看log,发现没问题

开启管理UI:

rabbitmq-plugins enable rabbitmq_management

service rabbitmq-server restart

在Windows下打开地址:

http://192.168.24.179:15672

用户名密码都是guest

利用celery执行异步任务

创建tasks.py文件

写入以下代码

# coding:utf-8

from celery import Celery

import time

app = Celery('tasks',backend='amqp',broker='amqp://guest@127.0.0.1:5672//')

@app.task

def add(x, y):

   print 'hello celery'

   time.sleep(10)

   return x + y

新建一个终端,启动celery服务

celery -A tasks worker --loglevel=info


执行任务

也可以循环执行add函数来测试同步和异步的特点,例如执行10000次看他们的区别

利用celery执行定时任务

创建time_task.py文件.主要职责是每隔10秒输出hello,每隔30秒输出world,每周一早上7点半输出Happy Mondays.你也可以改造成根据用户生日定时发送生日贺卡邮件或者每周一备份数据库等功能

from celery import Celery

from celery.schedules import crontab

app = Celery()

@app.on_after_configure.connect

def setup_periodic_tasks(sender, **kwargs):

    # Calls test('hello') every 10 seconds.

   sender.add_periodic_task(10.0, test.s('hello'), name='add every 10')

 

    #Calls test('world') every 30 seconds

   sender.add_periodic_task(30.0, test.s('world'), expires=10)

 

    #Executes every Monday morning at 7:30 a.m.

   sender.add_periodic_task(

       crontab(hour=7, minute=30, day_of_week=1),

       test.s('Happy Mondays!'),

    )

@app.task

def test(arg):

   print(arg)

新建一个终端



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值