麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Python > 正文

Django中使用Celery的方法示例

2020-02-15 23:49:27
字體:
供稿:網(wǎng)友

起步

在 《分布式任務(wù)隊(duì)列Celery使用說明》 中介紹了在 Python 中使用 Celery 來實(shí)驗(yàn)異步任務(wù)和定時(shí)任務(wù)功能。本文介紹如何在 Django 中使用 Celery。

安裝

pip install django-celery

這個(gè)命令使用的依賴是 Celery 3.x 的版本,所以會(huì)把我之前安裝的 4.x 卸載,不過對(duì)功能上并沒有什么影響。我們也完全可以僅用Celery在django中使用,但使用 django-celery 模塊能更好的管理 celery。

使用

可以把有關(guān) Celery 的配置放到 settings.py 里去,但我比較習(xí)慣單獨(dú)一個(gè)文件來放,然后在 settings.py 引入進(jìn)來:

# celery_config.pyimport djceleryimport osos.environ.setdefault('FORKED_BY_MULTIPROCESSING', '1')djcelery.setup_loader()BROKER_URL = 'redis://127.0.0.1:6379/1'CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/2'# UTCCELERY_ENABLE_UTC = TrueCELERY_TIMEZONE = 'Asia/Shanghai'CELERY_IMPORTS = ( 'app.tasks',)# 有些情況可以防止死鎖CELERY_FORCE_EXECV = True# 設(shè)置并發(fā)的worker數(shù)量CELERYD_CONCURRENCY = 4# 任務(wù)發(fā)送完成是否需要確認(rèn),這一項(xiàng)對(duì)性能有一點(diǎn)影響CELERY_ACKS_LATE = True# 每個(gè)worker執(zhí)行了多少任務(wù)就會(huì)銷毀,防止內(nèi)存泄露,默認(rèn)是無限的CELERYD_MAX_TASKS_PER_CHILD = 40# 規(guī)定完成任務(wù)的時(shí)間CELERYD_TASK_TIME_LIMIT = 15 * 60 # 在15分鐘內(nèi)完成任務(wù),否則執(zhí)行該任務(wù)的worker將被殺死,任務(wù)移交給父進(jìn)程# 設(shè)置默認(rèn)的隊(duì)列名稱,如果一個(gè)消息不符合其他的隊(duì)列就會(huì)放在默認(rèn)隊(duì)列里面,如果什么都不設(shè)置的話,數(shù)據(jù)都會(huì)發(fā)送到默認(rèn)的隊(duì)列中CELERY_DEFAULT_QUEUE = "default"# 設(shè)置詳細(xì)的隊(duì)列CELERY_QUEUES = { "default": { # 這是上面指定的默認(rèn)隊(duì)列  "exchange": "default",  "exchange_type": "direct",  "routing_key": "default" }, "beat_queue": {  "exchange": "beat_queue",  "exchange_type": "direct",  "routing_key": "beat_queue" }}

配置文件中設(shè)置了 CELERY_IMPORTS 導(dǎo)入的任務(wù),所以在django app中創(chuàng)建相應(yīng)的任務(wù)文件:

# app/tasks.pyfrom celery.task import Taskimport timeclass TestTask(Task): name = 'test-task' # 給任務(wù)設(shè)置個(gè)自定義名稱 def run(self, *args, **kwargs):  print('start test task')  time.sleep(4)  print('args={}, kwargs={}'.format(args, kwargs))  print('end test task')

在 settings.py 添加:

INSTALLED_APPS = [ # ... 'djcelery',]# Celeryfrom learn_django.celery_config import *

觸發(fā)任務(wù)或提交任務(wù)可以在view中來調(diào)用:

# views.pyfrom django.http import HttpResponsefrom app.tasks import TestTaskdef test_task(request): # 執(zhí)行異步任務(wù) print('start do request') t = TestTask() t.delay() print('end do request') return HttpResponse('ok')

啟動(dòng) woker 的命令是:

python manage.py celery worker -l info            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 色999中文字幕 | 黄色av一区二区三区 | 国产精品久久久久久久久久10秀 | 成人午夜免费在线视频 | gogo全球大胆高清人露出91 | 国产免费视频一区二区裸体 | 亚洲午夜在线观看 | 91精品国产综合久久青草 | 麻豆视频在线观看 | 国产精品久久久免费看 | 日本一区二区不卡高清 | 亚洲综合视频在线播放 | 91精品久久久久久久久网影视 | 日本一道aⅴ不卡免费播放 视屏一区 | 国产精品一二区 | 久久草在线视频 | 国产精品99久久久久久大便 | 一级黄色欧美 | 国产精品久久久久久久av三级 | 717影院理论午夜伦八戒秦先生 | 狠狠婷婷综合久久久久久妖精 | 最新av免费网址 | 欧美性生交大片 | 黄色片视频观看 | 杏美月av | 国产a级久久 | 91成人免费在线观看 | 国产成人在线免费视频 | 欧美日韩在线免费观看 | 精品无吗乱吗av国产爱色 | av成人在线免费观看 | 日本欧美一区二区三区在线观看 | 日本视频在线免费观看 | xxxx69hd一hd| 国产精品成人一区二区三区吃奶 | 国产一区二区免费在线观看 | 美女被免费网站在线软件 | xxxx18韩国护士hd老师 | 精品一区二区三区网站 | 亚洲成人在线免费 | 亚洲国产精品久久久久久久久久 |