使用celery執行非同步定時任務

2021-10-24 16:54:39 字數 1264 閱讀 2546

建立乙個名叫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...