通俗來說,celery是python的乙個非同步佇列伺服器。在我們日常web應用中,當請求乙個後端介面的時候,都是等待該介面的業務完成後再返回。那麼如果這個介面執行的任務很漫長,就可能造成服務阻塞甚至http請求超時。那麼如果web介面要執行很長時間的任務,又要保證即時給前端響應,就可以將很耗時間的任務交付給非同步佇列伺服器,該任務會在非同步佇列中自動執行完成。(一般來說不需要立即給使用者返回的介面都可以放到非同步佇列伺服器中)
celery for djanjo的安裝方式:
pip install celery
pip install django-celery
pip install celery-with-redis
pip install redis==2.10.6
celery在django中的配置
在settings中進行如下配置:
import djcelery
djcelery.setup_loader()
'djcelery'
celery方法定義:
import time
from celery import task
@task
def sayhello():
print('ready......')
time.sleep(2)
print(111)
celery 非同步函式在檢視中的使用
class index(view):
template = 'index.html'
def get(self,request):
sayhello.delay()
return render(request,self.template)
celery 與 python服務啟動方法
首次配置完成後執行sql同步方法
python manage.py makemigrations
python manage.py migrate
啟動服務:
先執行 python manage.py runserver
再執行python3 manage.py celery worker -c 4 --loglevel=info
( ps確保你的電腦已經安裝了redis並且啟動了redis-server )
在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...