celery 使用(一)

使用celery完成异步任务

背景

有时我们需要一些定时任务,比如,30分钟后,修改订单状态为不可支付,并恢复库存,此时,要实现这种功能需要单独一个程序,使其不断查询时间是否到期。显然这种方式会浪费大量资源,所以我们引入一个定时任务的框架celery。

celery简介

celery 是一个高效的异步任务框架,可以立刻执行异步操作,或者定时执行。也可以同步等待运行结果。

安装运行

要求:

redis(也可使用rabbitMQ)

celery:
pip install -U Celery

代码

  • 准备任务文件task.py
 from celery import Celery

 app = Celery('test_celery', include=['task'])
 #app.config_from_object('celeryconfig')
 app.conf.broker_url = 'redis://:P@ssword1!@localhost:6379/0'

 @app.task
 def add(x, y):
     return x+y

 if __name__ == '__main__':
     app.start()
  • 运行celery worker 服务:
    celery -A task worker --loglevel=info

  • ipython中启动任务

In [1]: from task import add

In [2]: add.delay(1,2). # 立刻执行异步操作
Out[2]: <AsyncResult: 96ebcaf3-5439-4f2d-8408-1a370772d84d>

In [3]: add.apply_async((1,2), countdown=10) # 10s钟后执行操作,
Out[3]: <AsyncResult: 55a59b9e-59b0-466a-bf96-e160bf2a2680>

执行结果

猜你喜欢

转载自www.cnblogs.com/yuzhenjie/p/9508057.html