欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django異步任務(wù)之Celery的基本使用

 更新時(shí)間:2019年03月23日 10:31:01   作者:Warm and new  
這篇文章主要給大家介紹了關(guān)于Django異步任務(wù)之Celery使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

Celery

許多Django應(yīng)用需要執(zhí)行異步任務(wù), 以便不耽誤http request的執(zhí)行. 我們也可以選擇許多方法來(lái)完成異步任務(wù), 使用Celery是一個(gè)比較好的選擇, 因?yàn)镃elery有著大量的社區(qū)支持, 能夠完美的擴(kuò)展, 和Django結(jié)合的也很好. Celery不僅能在Django中使用, 還能在其他地方被大量的使用. 因此一旦學(xué)會(huì)使用Celery, 我們可以很方便的在其他項(xiàng)目中使用它.

celery 是一個(gè)用于實(shí)現(xiàn)異步任務(wù)的庫(kù), 在很多項(xiàng)目中都使用它, 它和 django 融合使用很完美. 使用 celery 可以在實(shí)現(xiàn) http request請(qǐng)求返回 view 前做一些我們想做的而且耗時(shí)的事情而不會(huì)讓用戶等待太久

環(huán)境

django 版本 == 1.11.6

celery 版本 == 3.1.25

安裝

pip install django-celery
pip install celery

首先需要將 celery 添加到 django 項(xiàng)目的 settings 里, celery 任務(wù)和 django 需要一個(gè) 中間人(broker),,這里使用的是 django 自帶的 broker, 但在生產(chǎn)中一般使用 rabbitmq, Redis 等,在 INSTALLED_APP 中需要添加 djcelery 和 kombu.transport.django, 還有 app 應(yīng)用。

- project/project/ settings.py:

import djcelery

djcelery.setup_loader() 
BROKER_URL = 'django://'

INSTALLED_APP = (
 ...
 'app'
 'djcelery',
 'kombu.transport.django',
)

新建 celery.py 創(chuàng)建一個(gè) celery 應(yīng)用,并添加以下內(nèi)容

- project/project/ celery.py:

# 相對(duì)路徑導(dǎo)入, 防止導(dǎo)入 celery 時(shí)沖突
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings

# 讓 celery 能找到 django 項(xiàng)目
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
# 創(chuàng)建一個(gè) celery 應(yīng)用
app = Celery('project')

# 導(dǎo)入配置
app.config_from_object('django.conf:settings')
# 自動(dòng)發(fā)現(xiàn) task
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

@app.task(bind=True)
def debug_task(self):

 print('Request: {0!r}'.format(self.request))

 

- project/project/ __init__.py:

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

在 django app 中添加任務(wù),文件名必須是 tasks.py, 在普通 python 函數(shù)前加一個(gè) @task() 裝飾器就變成了 celery task

-project/app/ tasks.py:

from celery.task import task
from time import sleep

@task()
def helloWorld():
 print 'helloWorld'
 sleep(10)
 print 'helloWorld'
 return 'helloCelery'

這樣,一個(gè)任務(wù)就創(chuàng)建成功了,只剩下在 view 中調(diào)用了

-project/app view.py:

from tasks.py import helloWorld

def home():

 helloWorld.delay()

 return HttpResponse('helloCelery')

最后

python manage.py migrate

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論