celery的简单使用
一 安装celery
#首先进行一些简单配置 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
执行上述操作后会显示如下
有些系统显示的是None
显示没有找到配置文件.需要我们自己创建这个文件
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
在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)
新建一个终端 , 命令如上
以上就是celery常用的两种简单操作了, 如有疑问, 请留言!!!