python定时任务是异步的吗_Celery+python+redis异步执行定时任务

Celery+python+redis异步执行定时任务

我之前的一篇文章中写了【Celery+django+redis异步执行任务】

博文:http://blog.csdn.net/apple9005/article/details/54236212

你会发现,这些代码并不依赖django框架,随便写到一个py文件中,就可以轻松的执行成功,这是因为这些代码并没有用到django-celery,django-redis等依附于django框架的东西。

今天,参照官方文档示例,测试一下celery的异步执行定时任务如何。我先是在django框架内执行了一遍,没有问题;现在直接写个py文件,命令行下执行试试

1.环境搭建

通过pip 安装 celery、redis

pip install celery

pip install redis

默认安装celery 最新版是4.0.2

默认安装redis 最新版是2.10.5

另外不要忘记安装redis服务:

# wget http://download.redis.io/releases/redis-3.2.6.tar.gz

# tar xzf redis-3.2.6.tar.gz

# cd redis-3.2.6

# make

# src/redis-server # 启动redis服务,看清楚,这是在你的redis-3.2.6目录下执行的

# src/redis-cli # 启动客户端

1

2

3

4

5

6

2.编写py

直接vim搞起了

$ vim tesks.py

1

from celery import Celery

from celery.schedules import crontab

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

@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)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

按住shift键+Z+Z,保存文件并退出

3.在新命令窗口中启动redis服务

怎么启动?

进入你的redis目录

$ cd redis-3.2.6

$ src/redis-3.2.6

1

2

4.在新窗口中启动celery

进入你tasks.py所在目录,执行:

$ celery -A tasks worker --loglevel=info

1

此时,异步服务已经可用了,但定时任务并没有执行,怎么回事?你还需要再启动另一服务,如下

5.在新窗口中启动beat

还是要进入你tasks.py所在目录,执行:

$ celery -A tasks beat

1

启动后的样子:

90e8ce997c69a83f5e5cc55a4dba8839.png

看一下第4步的窗口,是不是有打印输出?good!每隔10秒打印一次hello,每隔30秒打印一次world!

4be3d10f2e3202aba855d566f7cea52e.png

具体你的项目要设置多长时间执行任务,可参见官方文档的参数说明。

附官方文档地址:http://docs.celeryproject.org/en/latest/

附:如何监控Celery?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值