Django celery6.4
生活随笔
收集整理的這篇文章主要介紹了
Django celery6.4
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
celery
- 官方網(wǎng)站
- 中文文檔
- 示例一:用戶發(fā)起request,并等待response返回。在本些views中,可能需要執(zhí)行一段耗時(shí)的程序,那么用戶就會(huì)等待很長(zhǎng)時(shí)間,造成不好的用戶體驗(yàn)
- 示例二:網(wǎng)站每小時(shí)需要同步一次天氣預(yù)報(bào)信息,但是http是請(qǐng)求觸發(fā)的,難道要一小時(shí)請(qǐng)求一次嗎?
- 使用celery后,情況就不一樣了
- 示例一的解決:將耗時(shí)的程序放到celery中執(zhí)行
- 示例二的解決:使用celery定時(shí)執(zhí)行
名詞
- 任務(wù)task:就是一個(gè)Python函數(shù)
- 隊(duì)列queue:將需要執(zhí)行的任務(wù)加入到隊(duì)列中
- 工人worker:在一個(gè)新進(jìn)程中,負(fù)責(zé)執(zhí)行隊(duì)列中的任務(wù)
- 代理人broker:負(fù)責(zé)調(diào)度,在布置環(huán)境中使用redis
使用
- 安裝包
celery==3.1.25
celery-with-redis==3.0
django-celery==3.1.17
- 配置settings
INSTALLED_APPS = (...'djcelery',
}...import djcelery
djcelery.setup_loader()
BROKER_URL = 'redis://127.0.0.1:6379/0'
CELERY_IMPORTS = ('應(yīng)用名稱.task')
- 在應(yīng)用目錄下創(chuàng)建task.py文件
import time
from celery import task@task
def sayhello():print('hello ...')time.sleep(2)print('world ...')
- 遷移,生成celery需要的數(shù)據(jù)表
python manage.py migrate
- 啟動(dòng)Redis
sudo redis-server /etc/redis/redis.conf
- 啟動(dòng)worker
python manage.py celery worker --loglevel=info
- 調(diào)用語法
function.delay(parameters)
- 使用代碼
#from task import *def sayhello(request):print('hello ...')import timetime.sleep(10)print('world ...')# sayhello.delay()return HttpResponse("hello world")
總結(jié)
以上是生活随笔為你收集整理的Django celery6.4的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Django 全文检索6.3
- 下一篇: PHP 算法题:有多少苹果用来分赃1.1