這是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
然后按照提示一步步進行輸入。
打開第三個終端云矫,重啟項目:
$ python manage.py runserver
進入后臺:127.0.0.1:8000/admin/
會看到Djcelery應(yīng)用下有如圖下五項:
怎樣配置:
- 定時膳沽。進入
Crontabs
頁面,這個和Linux的Crontab命令類似让禀,如不熟悉可自行g(shù)oogle(因為我也不怎么用)挑社。點擊Add crontab
按鈕后輸入**14 * * * ***保存(每到十四分鐘時執(zhí)行任務(wù))。 - 配置任務(wù)巡揍。進入
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é)束拆魏,拜拜...