建立乙個名叫tasks.py的檔案,裡邊單獨存放定時任務函式
from datetime import timedelta
from django.utils import timezone
from polls.models import user
defcheck_inactive_user()
:"""檢查不活躍使用者"""
time_before_30days = timezone.now(
)- timedelta(days=30)
user.objects.
filter
(last_visit__lte=time_before_30days)
.\ filter
(is_active=
true
).update(is_active=
false
)def
update_user_votecount()
:"""更新使用者票數為5票"""
user.objects.
filter
(is_active=
true
).update(vote_count=
5)
寫好定時任務函式後,在__init__.py檔案中,配置定時任務的執行計畫
import celery
from celery.schedules import crontab
from vote import settings
lambda
# 通過celery物件的conf屬性的update訊息配置定時任務
timezone=settings.time_zone,
enable_utc=
true
,# 定時任務(計畫任務)相當於是訊息的生產者
# 如果只有生產者沒有消費者那麼訊息就會在訊息佇列中積壓
# 將來實際部署專案的時候生產者、消費者、訊息佇列可能都是不同節點
beat_schedule=
,'update_user_votecount':,
},)
terminal 1 --生成訊息佇列
celery -a vote beat -l debug
terminal 2 --執行訊息佇列
celery -a vote worker -l debug
celery 執行celery定時任務
場景 在虛擬機器上執行 python django celery redis 的定時任務 可能遇到的問題 如果在執行過程中,定時任務突然退出,並報以下錯誤,錯誤顯示,沒有許可權訪問一些目錄檔案 解決方案 1 關閉當前redis服務 在step 3中有描述如何關閉 2 以root使用者執行啟動redi...
Django 非同步任務 定時任務Celery
將任務分配給其他的程序去執行,django的主程序只負責發起任務,而執行任務的不在使用 django 的主程序。python 有乙個很棒的非同步任務框架,叫做 celery django為了讓開發者開發更加方便,整合了 celery,形成了django celery 外掛程式1.安裝django c...
celery的非同步任務與定時任務
在django web平台開發中,碰到一些請求執行的任務時間較長 幾分鐘 為了加快使用者的響應時間,因此決定採用非同步任務的方式在後台執行這些任務。與此同時,celery除了非同步任務,還可以開啟定時任務,方便排程。2 安裝需要的軟體包 按照順序安裝 pip install celery pip i...