celery 订阅
药芹,别名芹菜、旱芹等。是伞形科一二年生草本植物。它原产地中海沿岸及瑞典等地的沼泽地带。 [1]  芹菜叶柄肥嫩,含有丰富的矿物、盐类、维生素和芹菜油,具芳香味,能增进食欲,又有降低血压、健脑和清肠利便的作用,可沙食、生食或腌渍,世界各地普遍栽培。 [2] 展开全文
药芹,别名芹菜、旱芹等。是伞形科一二年生草本植物。它原产地中海沿岸及瑞典等地的沼泽地带。 [1]  芹菜叶柄肥嫩,含有丰富的矿物、盐类、维生素和芹菜油,具芳香味,能增进食欲,又有降低血压、健脑和清肠利便的作用,可沙食、生食或腌渍,世界各地普遍栽培。 [2]
信息
伞形科
双子叶植物纲
亚    科
芹亚科
分布区域
原产地中海沿岸。我国各地均有栽培。喜生于沼泽地带。
别    称
香芹、芹菜、旱芹、菫、白芹
亚    纲
蔷薇亚纲
芹属
外文名
Celery
拉丁学名
Apium graveolens L.
被子植物门
植物界
药芹
伞形目
中文学名
旱芹
药芹形态特征
二年生或多年生草本,高15~150厘米,有强烈香气。 根圆锥形,支根多数,褐色。茎直立,光滑,有少数分枝,并有棱角和直槽。根生叶有柄,柄长2~26厘米,基部略扩大成膜质叶鞘;叶片轮廓为长圆形至倒卵形,长7~18厘米,宽3.5~8厘米,通常3裂达中部或3全裂,裂片近菱形,边缘有圆锯齿或锯齿,叶脉两面隆起;较上部的茎生叶有短柄,叶片轮廓为阔三角形,通常分裂为3小叶,小叶倒卵形,中部以上边缘疏生钝锯齿以至缺刻。 [3]  复伞形花序顶生或与叶对生,花序梗长短不一,有时缺少,通常无总苞片和小总苞片;伞辐细弱,3~16,长0.5~2.5厘米;小伞形花序有花7~29,花柄长1~1.5毫米萼齿小或不明显;花瓣白色或黄绿色,圆卵形,长约1毫米,宽0.8毫米,顶端有内折的小舌片;花丝与花瓣等长或稍长于花瓣,花药卵圆形,长约0.4毫米;花柱基扁压,花柱幼时极短,成熟时长约0.2毫米,向外反曲。分生果圆形或长椭圆形,长约1.5毫米,宽1.5~2毫米,果棱尖锐,合生面略收缩;每棱槽内有油管1,合生面油管2,胚乳腹面平直,花期4~7月。 [3] 
收起全文
精华内容
下载资源
问答
  • celery

    2020-10-27 20:43:37
    Celery 1 定义 Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统 它是一个专注于实时处理的任务队列,同时也支持任务调度 中文官网:http://docs.jinkan.org/docs/celery/ 在线安装 sudo pip3 install -U...

    Celery

    1 定义

    Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统

    它是一个专注于实时处理的任务队列,同时也支持任务调度

    中文官网:http://docs.jinkan.org/docs/celery/

    在线安装 sudo pip3 install -U Celery

    离线安装

    tar xvfz celery-0.0.0.tar.gz
    cd celery-0.0.0
    python3 setup.py build
    python3 setup.py install
    

    名词解释:

    broker - 消息传输的中间件,生产者一旦有消息发送,将发至broker;【RQ,redis】

    backend - 用于存储消息/任务结果,如果需要跟踪和查询任务状态,则需添加要配置相关

    worker - 工作者 - 消费/执行broker中消息/任务的进程

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GBGE88kl-1603802572504)(images\1566233784792.png)]

    2 使用Celery

    1, 创建woker

    #创建 tasks.py 文件
    
    from celery import Celery
    #初始化celery, 指定broker
    app = Celery('guoxiaonao', broker='redis://:password@127.0.0.1:6379/1')
    
    #若redis无密码,password可省略
    #app = Celery('guoxiaonao', broker='redis://:@127.0.0.1:6379/1')
    
    # 创建任务函数
    @app.task
    def task_test():
        print("task is running....") 
        
    
    #Ubuntu 终端中, tasks.py文件同级目录下 执行
    celery -A tasks worker --loglevel=info
    #执行后终端显示如下,证明成功!
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QjRkC2Gr-1603802572507)(images\1572965411915.png)]

    2,创建生产者 - 推送任务

    ​ 在tasks.py文件的同级目录进入 ipython3 执行 如下代码

    from tasks import task_test
    task_test.delay()
    #执行后,worker终端中现如如下
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ys989ojG-1603802572508)(images\1572965545212.png)]

    存储执行结果

    ​ Celery提供存储任务执行结果的方案,需借助 redis 或 mysql 或Memcached 等

    ​ 详情可见 http://docs.celeryproject.org/en/latest/reference/celery.result.html#module-celery.result

    #创建 tasks_result.py
    from celery import Celery
    app = Celery('demo',
                 broker='redis://@127.0.0.1:6379/1',
                 backend='redis://@127.0.0.1:6379/2',
                 )
    
    # 创建任务函数
    @app.task
    def task_test(a, b):
        print("task is running")
        return a + b
    

    tasks_result.py 同级目录终端中-启动celery worker

    celery -A tasks_result worker --loglevel=info
    

    在相同目录下 打开终端创建生产者 - 同【上步】;执行成功后,可调用如下方法取得执行结果

    from tasks_result import task_test
    s = task_test.delay(10,100)
    s.result
    

    3 Django + Celery

    1,创建项目+应用

    #常规命令
    django-admin startproject test_celery
    python manage.py startapp user
    

    2,创建celery.py

    在settings.py同级目录下 创建 celery.py文件

    文件内容如下:

    from celery import Celery
    from django.conf import settings
    import os
    
    # 为celery设置环境变量
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'test_celery.settings')
    
    # 创建应用
    app = Celery("test_celery")
    # 配置应用
    app.conf.update(
        # 配置broker
        BROKER_URL='redis://:@127.0.0.1:6379/1',
    )
    # 设置app自动加载任务
    app.autodiscover_tasks(settings.INSTALLED_APPS)
    

    3, 在应用模块【user目录下】创建tasks.py文件

    文件内容如下:

    from test_celery.celery import app
    import time
    
    @app.task
    def task_test():
        print("task begin....")
        time.sleep(10)
        print("task over....")
    

    4, 应用视图编写;内容如下:

    from django.http import HttpResponse
    from .tasks import task_test
    import datetime
    
    def test_celery(request):
        task_test.delay()
    	now = datetime.datetime.now()
        html = "return at %s"%(now.strftime('%H:%M:%S'))
        return HttpResponse(html)
    

    5, 分布式路由下添加 test_celery函数对应路由,此过程略

    6, 启动django python3 manage.py runserver

    7, 创建 celery worker

    ​ 在项目路径下,即test_celery 下 执行如下

    celery -A test_celery worker -l info
    

    8,浏览器中执行对应url

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SZiHstef-1603802572519)(images\1572968646168.png)]

    worker终端中显示

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IBxeoBo7-1603802572521)(images\1572968687718.png)]

    4,生产环境 启动

    1,并发模式切换

    ​ 默认并发采用 - prefork

    ​ 推荐采用 - gevent 模式 - 协程模式

    celery -A proj worker -P gevent -c 1000
    # P POOL Pool implementation: 支持 perfork or eventlet or gevent
    # C CONCURRENCY 并发数  
    

    2,后台启动命令

    nohup celery -A proj worker -P gevent -c 1000 > celery.log 2>&1 &
    
    #1,nohup: 忽略所有挂断(SIGHUP)信号
    #2,标准输入是文件描述符0。它是命令的输入,缺省是键盘,也可以是文件或其他命令的输出。
    #标准输出是文件描述符1。它是命令的输出,缺省是屏幕,也可以是文件。
    #标准错误是文件描述符2。这是命令错误的输出,缺省是屏幕,同样也可以是文件。
    #3,&符号:代表将命令在后台执行
    
    展开全文
  • Celery

    2020-03-23 14:40:09
    官方文档 Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryproject.org/en/latest/index.html Celery 官方文档中文版...Celery是一个自带socket的框架,自身是一个独立运行...

    官方文档

    Celery 官网:http://www.celeryproject.org/

    Celery 官方文档英文版:http://docs.celeryproject.org/en/latest/index.html

    Celery 官方文档中文版:http://docs.jinkan.org/docs/celery/

    介绍

    Celery是一个自带socket的框架,自身是一个独立运行的服务

    启动celery服务,用来执行服务中的任务,celery服务中自带一个执行任务的对象,会执行准备就绪的任务,并将执行结果保存起来

    Celery框架组成部分:

    • broker: 存放被执行任务的库, 如RabbitMQ, Redis等等
    • worker: 执行任务的对象, worker并发的运行在分布式的系统节点中。
    • backend: 存放任务结果的库, Celery支持以不同方式存储任务的结果,包括AMQP, redis等

    注意: 安装的celery主体模块,默认只提供worker,要结合其他技术提供broker和backend(两个存储的单位)

    使用

    安装:

    pip install celery

    场景:

    • 异步任务:将耗时操作任务提交给Celery去异步执行,比如发送短信/邮件、消息推送、音视频处理等等
    • 定时任务:定时执行某件事情,比如每天数据统计
    celery三种任务的使用场景 - 重点: 
    
    url:发送邮件的接口/email/ - 发送者地址 与 发送消息 (发送的时间)
    视图类:EmailAPIView - post
    post逻辑:
        1)交给celery异步立即执行:拿到celery_task包中的任务(发邮件功能),调用delay就可以将任务交给celery异步执行 
        2)定时发送邮件(延迟到指定时间发送):拿到celery_task包中的任务,根据发送时间确定延迟执行的时间,调用apply_async延迟执行
        
    
    定时任务:定时爬虫、定时更新(接口缓存更新)

    任务执行模式:

    • 立即执行: delay()
    • 延迟执行: apply_async()
    • 定时执行: beat 服务端

    Celery执行异步任务

    基本使用:

    手动添加 立即执行任务 与 延迟执行任务 https://blog.csdn.net/Waller_/article/details/105050947

    高级使用:

    自动 定时执行任务 https://blog.csdn.net/Waller_/article/details/105053702

    补充:

    Django使用Celery时,最好将celery_task包放到项目的跟目录下

    • celery.py
    # 在celery.py中配置django环境
    import os, django
    # import sys
    # sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "luffyapi.settings.dev")
    django.setup()
    
    
    from celery import Celery
    broker = 'redis://127.0.0.1:6379/14'  # 任务仓库
    backend = 'redis://127.0.0.1:6379/15'  # 结果仓库
    include = ['celery_task.tasks']  # 任务们,完成需求的函数所在的文件
    app = Celery(broker=broker, backend=backend, include=include)
    
    ......

     

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,161
精华内容 5,664
关键字:

celery