django celery使用

简介:

版本:

celery:3.1.25

django-celery:3.2.2

django:1.8.16


安装celery3

1
2
pip  install  celery==3.1.25
pip  install  django-celery


celery与django结合使用的配置:

参考文档:http://docs.celeryproject.org/en/3.1/django/first-steps-with-django.html


proj/proj/settings配置:

1
2
3
4
5
6
7
8
9
10
INSTALLED_APPS  =  (
     'django.contrib.admin' ,
     'django.contrib.auth' ,
     'django.contrib.contenttypes' ,
     'django.contrib.sessions' ,
     'django.contrib.messages' ,
     'django.contrib.staticfiles' ,
     'study' ,
     'djcelery' ,
)


1
2
3
4
5
6
7
8
9
10
11
12
13
import  djcelery
djcelery.setup_loader()
BROKER_URL  =  'redis://172.16.42.128:6379'
CELERYBEAT_SCHEDULER  =  'djcelery.schedulers.DatabaseScheduler'
CELERY_RESULT_BACKEND  =  'djcelery.backends.database:DatabaseBackend'
CELERY_ACCEPT_CONTENT  =  [ 'application/json' ]
CELERY_TASK_SERIALIZER  =  'json'
CELERY_RESULT_SERIALIZER  =  'json'
CELERY_TIMEZONE  =  'Asia/Shanghai'
CELERY_ENABLE_UTC  =  False
CELERYD_CONCURRENCY  =  10
CELERYD_MAX_TASKS_PER_CHILD  =  5
CELERY_SEND_EVENTS  =  True


proj/proj/__init__.py

1
2
3
4
5
from  __future__  import  absolute_import
 
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from  .celery  import  app as celery_app   # noqa



proj/proj/celery.py

注意:proj改成你自己项目的名称

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from  __future__  import  absolute_import
 
import  os
 
from  celery  import  Celery
 
# set the default Django settings module for the 'celery' program.
os.environ.setdefault( 'DJANGO_SETTINGS_MODULE' 'proj.settings' )
 
from  django.conf  import  settings   # noqa
 
app  =  Celery( 'proj' )
 
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object( 'django.conf:settings' )
app.autodiscover_tasks( lambda : settings.INSTALLED_APPS)
 
@app .task(bind = True )
def  debug_task( self ):
     print ( 'Request: {0!r}' . format ( self .request))



demoapp/tasks.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from  __future__  import  absolute_import
 
from  celery  import  shared_task
 
 
@shared_task
def  add(x, y):
     return  +  y
 
@shared_task
def  mul(x, y):
     return  *  y
     
     
@shared_task
def  xsum(numbers):
     return  sum (numbers)


命令行启动celery

启动celerycam

1
python manage.py celerycam


启动worker

1
  python manage.py celery worker -l info


启动beat

1
  python manage.py celery beat -l info










本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/2069055,如需转载请自行联系原作者

目录
相关文章
|
10月前
|
NoSQL 调度 Redis
33 Django高级 - celery
33 Django高级 - celery
33 0
|
20天前
|
消息中间件 存储 监控
Django后端架构开发:Celery异步调优,任务队列和调度
Django后端架构开发:Celery异步调优,任务队列和调度
35 1
|
20天前
|
消息中间件 NoSQL 调度
Django后端架构开发:Django 与 Celery 的深度集成
Django后端架构开发:Django 与 Celery 的深度集成
72 0
|
3月前
|
数据库 Python
【译】Celery文档3:在Django中使用Celery
【译】Celery文档3:在Django中使用Celery
|
JSON NoSQL Redis
Win11系统下使用Django+Celery实现异步任务队列以及定时(周期)任务(2020年最新攻略)
首先明确一点,celery4.1+的官方文档已经详细说明,该版本之后不需要引入依赖 django-celery 这个库了,直接用 celery 本身就可以了,就在去年年初的一篇文章[python3.7.2+Django2.0.4 使用django-celery遇到的那些坑](https://v3u.cn/a_id_54),中提到的一些bug,在今年早已不复存在,所以技术更新频率越来越快,本文详细阐述用新版Celery(4.4.2)来实现。
Win11系统下使用Django+Celery实现异步任务队列以及定时(周期)任务(2020年最新攻略)
|
监控 Python
Python编程:Django中使用Celery执行异步任务和定时任务
Python编程:Django中使用Celery执行异步任务和定时任务
216 0
|
Python
django celery 异步执行任务遇到的坑
django celery 异步执行任务遇到的坑
Django查看celery任务结果
异步任务执行的时候对于用户来说总是会出现再次尝试,第二次查看结果的时候如果能查到任务结果如何那就可以减少好多不必要的查询和重试。
|
Python NoSQL Redis
Django配置celery定时任务
安装celery 使用redis+celery的方式(使用的是阿里源,也可以选择不用) pip install -i https://mirrors.aliyun.com/pypi/simple/ -U "celery[redis]" 修改Django的settings配置文件 添加celery文件在app同级目录下添加一个文件夹,例:service_celery 在文件夹中添加celery.
|
存储 消息中间件 NoSQL
Django配置celery(非djcelery)执行异步任务和定时任务
所有演示均基于Django2.0 celery是一个基于python开发的简单、灵活且可靠的分布式任务队列框架,支持使用任务队列的方式在分布式的机器/进程/线程上执行任务调度。采用典型的生产者-消费者模型,主要由三部分组成: 消息队列broker:broker实际上就是一个MQ队列服务,可以使...
2478 0