這是Celery系列的最后一篇。
在Django中怎么用Celery呢?當(dāng)然第三篇中是一種方法,那種方法自由度很大,也很有用。不過,既然Django的Admin如此好用,我們有沒有什么方式將Admin與Celery結(jié)合起來呢,下面就來介紹django-celery插件。
1.安裝django-celery
django-celery是一個已經(jīng)寫好的Django App插件,我們使用pip方式安裝。
$ sudo pip install django-celery
2.配置settings.py
添加配置至settings.py:
#使用的為上一篇的demo project
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'home',#上一篇自己的應(yīng)用
'djcelery',#加上這個東西,不要問我為什么
)
...
#末尾添加數(shù)據(jù)庫調(diào)度
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
3.數(shù)據(jù)庫
同步數(shù)據(jù)庫,命令行輸入:
$ python manage.py migrate
運行后,我們可以看到類似如下圖:

以為在數(shù)據(jù)庫中添加相關(guān)
djcelery的表。
4.初始命令
現(xiàn)在我們打開命令行窗口:
給大家介紹一款好用的終端
我工作中使用的終端為Terminator(終結(jié)者),哇,一聽名字就碉堡了。
它可以隨意分割窗口,比ubuntu自帶的終端好用多了。就像這樣:

有了Terminator之后,媽媽再也不用擔(dān)心我因手速不夠快而浪費大把時間了。
- 在一個終端中重啟Celery命令:
$ celery -A demo worker -l debug
- 打開另一個終端窗口,輸入命令:
$ celery -A demo beat -l debug --max-interval=10 #每十秒掃瞄任務(wù)

上面命令意為每10秒鐘掃描djcelery任務(wù),不過現(xiàn)在我們還沒有定義任何定時任務(wù),請看第5步。
5.配置Admin后臺
因為要用到Admin后臺,我們必須新建超級用戶:
$ python manage.py createsuperuser
然后按照提示一步步進(jìn)行輸入。
打開第三個終端,重啟項目:
$ python manage.py runserver
進(jìn)入后臺:127.0.0.1:8000/admin/
會看到Djcelery應(yīng)用下有如圖下五項:

怎樣配置:
- 定時。進(jìn)入
Crontabs頁面,這個和Linux的Crontab命令類似,如不熟悉可自行g(shù)oogle(因為我也不怎么用)。點擊Add crontab按鈕后輸入**14 * * * ***保存(每到十四分鐘時執(zhí)行任務(wù))。 - 配置任務(wù)。進(jìn)入
Periodic tasks周期性任務(wù)選項。點擊Add Periodic tasks按鈕。添加配置如下圖:

解釋:我們設(shè)置了一個名為Hello的任務(wù)。任務(wù)內(nèi)容為
home.tasks.hello_world,也就是我們上一節(jié)中寫的那個。選擇周期為我們第一步定義好的**14 * * * ***。當(dāng)然你也可以配置一下Interval。
6.查看結(jié)果
待到每個小時的14分鐘,你便可以看到Celery的后臺執(zhí)行了hello_world函數(shù)(打印了hello world)。不過這個Crontab定得太特殊了。我們可以再寫一個類似***/5 * * * ***,每5分鐘執(zhí)行...
7.總結(jié):
Celery還有很多不錯的功能,官方教程是個不錯的地方。有人說全是英語看不懂啊,其實就我來看,英文教程不必每個單詞都懂,因為一般教程都會有代碼演示的,你可以先瀏覽一邊英文,再看代碼,回過頭來就能知道大致意思了。Celery介紹到此結(jié)束,拜拜...