在django中使用
celery
django版本
1.9.8
pip install django-celery
redis要指定版本,預設的
3.x版本有問題
pip uninstall redis
pip install redis==2.10.6
建立django的
,並配置執行起來,作為
celery
的測試應用
將celery_course這個
拖入這個集合資料夾中
把celery_course加入
settings.py
配置中
定義views這個檢視
#執行非同步任務
定義url
#課程機構首頁
url(r'
^do/$
', doview.as_view(), name="do"
),]啟動django應用,訪問
python manage.py runserver 0.0.0.0:8000
能正常訪問,說明django配置沒問題
接下來配置celery相關的內容
定義任務tasks.py
celery_course/tasks.py
#配置celery_*_ coding:utf-8 _*_
#__author__ == 'jack'
import
time
from celery.task import
task
class
coursetask(task):
name = '
celery-course-task
'def run(self, *args, **kwargs):
'start celery_course task
'time.sleep(5)
'args={}, kwargs={}
'.format(args, kwargs)
'end course task
'
mxonline/celeryconfig.py
#將celery和_*_ coding:utf-8 _*_
#__author__ == 'jack'
import
djcelery
from datetime import
timedelta
djcelery.setup_loader()
celery_imports =(
'celery_course.tasks',
)celery_queues =,
'work_queue':
}#預設佇列
celery_default_queue = '
work_queue'#
有些情況可以防止死鎖
celeryd_force_execv =true
#設定併發的worker數量
celeryd_concurrency = 4
#允許重試
celery_acks_late =true
#每個worker最多執行100個任務被銷毀,可以防止記憶體洩露
celeryd_max_tasks_per_child = 100
#單個任務的最大執行時間
celeryd_task_time_limit = 12 * 30
#配置定時任務
celerybeat_schedule =}}
django
聯絡起來,修改
settings.py
配置加入
匯入celeryconfig配置
#匯入celery相關的配置
啟動django
啟動worker
啟動beat定時任務
(mxonline) d:\python\mxonline>python manage.py celery beat --loglevel=info
在Django中使用DISTINCT
有時候想用distinct去掉queryset中的重複項,看django文章中是這麼說的 author.objects.distinct entry.objects.order by pub date distinct pub date entry.objects.order by blog dis...
在django中使用logging
django中似乎沒有專門支援logging的module。想在自己開發程式中使用一下log功能,記錄訪問情況,和輸入debug的一些資訊。於是google到一段 使用的python的標準庫logging,目前工作還算正常.url import logging import threading fr...
在Django中使用group by
在django中怎樣使用group by語句呢?找了很多資料,都沒有看到好的,在這裡分享兩種方法給大家 首先,我們先建乙個簡單的模型。class book models.model name models.charfield u 書名 max length 255,db index true aut...