allbet电脑版下载:Celery浅谈

admin 1周前 (06-26) 科技 6 0

一、Celery 焦点模块

1. Brokers

brokers 中文意思为中间人,在这里就是指义务行列自己,吸收生产者发来的新闻即Task,将义务存入行列。义务的消费者是Worker,Brokers 就是生产者和消费者存放/拿取产物的地方(行列)。Celery 饰演生产者和消费者的角色。

常见的 brokers 有 rabbitmq、redis、Zookeeper 等。推荐用Redis或RabbitMQ实现行列服务

2. Workers

就是 Celery 中的事情者,执行义务的单元,类似与生产/消费模子中的消费者。它实时监控新闻行列,若是有义务就从行列中取出义务并执行它。

3. Backend / Result Stores

用于存储义务的执行效果。行列中的义务运行完后的效果或者状态需要被义务发送者知道,那么就需要一个地方储存这些效果,就是 Result Stores 了。

常见的 backend 有 redis、Memcached 甚至常用的数据库都可以。

4. Tasks

就是想在行列中举行的义务,有异步义务和准时义务。一样平常由用户、触发器或其他操作将义务入队,然后交由 workers 举行处置。

5. Beat

准时义务调剂器,凭据设置准时将义务发送给Brokers。

二、Celery 基本使用

1.建立一个celery application 用来界说你的义务列表,建立一个义务文件就叫tasks.py吧。

from celery import Celery
 
# 设置好celery的backend和broker
app = Celery('task1',  backend='redis://127.0.0.1:6379/0', broker='redis://127.0.0.1:6379/0')
  
#通俗函数装饰为 celery task
@app.task 
def add(x, y):
    return x + y

云云而来,我们只是界说好了义务函数func函数和worker(celery工具)。worker相当于事情者。

2.启动Celery Worker来最先监听并执行义务。broker 我们有了,backend 我们有了,task 我们也有了,现在就该运行 worker 举行事情了,在 tasks.py 所在目录下运行:

[root@localhost ~]# celery -A tasks worker --loglevel=info    # 启动方式1
[root@localhost ~]# celery -A tasks worker --l debug          # 启动方式2

现在 tasks 这个义务聚集的 worker 在举行事情(固然此时broker中还没有义务,worker此时相当于待命状态),若是行列中已经有义务了,就会立刻执行。

3.挪用义务:要给Worker发送义务,需要挪用 delay() 方式。

import time
from tasks import add
 
# 不要直接add(6, 6),这里需要用 celery 提供的接口 delay 举行挪用
result = add.delay(6, 6)
while not result.ready():
    time.sleep(1)
print('task done: {0}'.format(result.get()))

三、Celery 进阶使用

1.celery_config.py:设置文件

from __future__ import absolute_import, unicode_literals
#从python的绝对路径导入而不是当前的剧本     #在python2和python3做兼容支持的
 
BROKER_URL = 'redis://127.0.0.1:6379/0'
# 指定效果的接受地址
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'

2.tasks.py

from __future__ import absolute_import, unicode_literals
#从python的绝对路径导入而不是当前的剧本     #在python2和python3做兼容支持的
from celery import Celery
 
# 设置好celery的backend和broker, task1:app的名字。broker
app = Celery('task1',                              #
             broker='redis://127.0.0.1:6379/0',   # 新闻行列:连rabbitmq或redis
             backend='redis://127.0.0.1:6379/0')  # 存储效果:redis或mongo或其他数据库
  
app.config_from_object("celery_config")
app.conf.update(         # 给app设置参数
    result_expires=3600, # 保留时间为1小时
)
 
#通俗函数装饰为 celery task
@app.task 
def add(x, y):
    return x + y
     
if __name__ == '__main__':
    app.start()

3.启动worker

[root@localhost ~]``# celery -A tasks worker --loglevel=info

4.test.py

import time
from tasks import add
 
# 不要直接add(4, 4),这里需要用 celery 提供的接口 delay 举行挪用
result = add.delay(6, 6)
print(result.id)
while not result.ready():
    time.sleep(1)
print('task done: {0}'.format(result.get()))
,

欧博会员开户

欢迎进入欧博会员开户(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

皇冠体育声明:该文看法仅代表作者自己,与本平台无关。转载请注明:allbet电脑版下载:Celery浅谈

标签列表

    文章归档

    站点信息

    • 文章总数:391
    • 页面总数:0
    • 分类总数:8
    • 标签总数:746
    • 评论总数:0
    • 浏览总数:4901