zoukankan      html  css  js  c++  java
  • celery的使用

    celery:芹菜
    -是什么,用来干什么?
    -用python写的执行定时任务和异步任务的框架

    -执行异步任务:
    1 创建任务:tasks.py
    2 把任务添加到队列中:add_task.py
    3 开启work,执行任务
    -用命令:celery -A tasks worker -l info
    -在windows下:celery worker -A tasks -l info -P eventlet
    4 查看任务执行结果:task_result.py
    -多任务结构
    -重点:执行work的时候:celery worker -A celery_task -l info -P eventlet

    -定时任务执行
    -指定一个时间点执行任务
    apply_async(args=[4, 3], eta=task_time)
    -每天某个时间执行
    详情看代码
    -启动一个beat,负责调度,添加任务:celery beat -A celery_task -l info
    -启动work执行任务:celery worker -A celery_task -l info -P eventlet
    -django中使用
    -上面讲的多任务结构方式

     1 ## Django中使用Celery
     2 
     3 在项目目录下创建celeryconfig.py
     4 import djcelery
     5 djcelery.setup_loader()
     6 CELERY_IMPORTS=(
     7     'app01.tasks',
     8 )
     9 #有些情况可以防止死锁
    10 CELERYD_FORCE_EXECV=True
    11 # 设置并发worker数量
    12 CELERYD_CONCURRENCY=4
    13 #允许重试
    14 CELERY_ACKS_LATE=True
    15 # 每个worker最多执行100个任务被销毁,可以防止内存泄漏
    16 CELERYD_MAX_TASKS_PER_CHILD=100
    17 # 超时时间
    18 CELERYD_TASK_TIME_LIMIT=12*30
    19 
    20 在app01目录下创建tasks.py
    21 from celery import task
    22 @task
    23 def add(a,b):
    24     with open('a.text', 'a', encoding='utf-8') as f:
    25         f.write('a')
    26     print(a+b)
    27 
    28 视图函数views.py
    29 from django.shortcuts import render,HttpResponse
    30 from app01.tasks import add
    31 from datetime import datetime
    32 def test(request):
    33     # result=add.delay(2,3)
    34     ctime = datetime.now()
    35     # 默认用utc时间
    36     utc_ctime = datetime.utcfromtimestamp(ctime.timestamp())
    37     from datetime import timedelta
    38     time_delay = timedelta(seconds=5)
    39     task_time = utc_ctime + time_delay
    40     result = add.apply_async(args=[4, 3], eta=task_time)
    41     print(result.id)
    42     return HttpResponse('ok')
    43 
    44 settings.py
    45 INSTALLED_APPS = [
    46     ...
    47     'djcelery',
    48     'app01'
    49 ]
    50 
    51 ...
    52 
    53 from djagocele import celeryconfig
    54 BROKER_BACKEND='redis'
    55 BOOKER_URL='redis://127.0.0.1:6379/1'
    56 CELERY_RESULT_BACKEND='redis://127.0.0.1:6379/2'
    View Code
  • 相关阅读:
    IntelliJ Idea的黑色主题+代码高亮
    @EqualsAndHashCode
    @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor
    springcloud各种网址
    利用PowerDesigner连接Mysql数据库并逆向所有表关系图【两种方式】
    Java 异步实现的几种方式
    如何查看Linux操作系统版本
    Java中关于WeakReference和WeakHashMap的理解
    Java弱引用(WeakReference)的理解与使用
    Unchecked Exception 和 Checked Exception 比较
  • 原文地址:https://www.cnblogs.com/xuqidong/p/12122301.html
Copyright © 2011-2022 走看看