Django Celery定時任務

2021-10-05 19:43:48 字數 2143 閱讀 3470

celery是由python開發的乙個簡單、靈活、可靠的處理大量任務的分發系統,它不僅支援實時處理也支援任務排程。

pip3 install django-celery-beat

pip3 install redis

寫入配置

celery_broker_url =

'redis://:密碼@127.0.0.1:6800'

celery_accept_content =

['json'

]celery_result_backend =

'redis://:密碼@47.95.243.237:6800'

celery_task_serializer =

'json'

settings同級目錄建立celery.py

import os

from celery import celery

os.environ.setdefault(

'django_settings_module'

,'專案名.settings'

)'專案名'

)'django.conf:settings'

, namespace=

'celery'

))

settings同級__init__.py

from

__all__ =(,

)

import uuid

from celery import shared_task

@shared_task

defto_preview_status_task

(auction_id)

:print

("auction_id"

,auction_id)

view中呼叫

:# 立即執行

# result = tasks.to_preview_status_task.delay(1)

tim =

'2019-10-10 20:10:10'

preview_utc_datetime =datetime.utcfromtimestamp(time.mktime(time.strptime(tim,

"%y-%m-%d %h:%m:%s"))

)# 定時執行[1

], eta=preview_utc_datetime)

print

(result.id)

# 任務id

print

(result.status)

# 任務狀態

result.revoke(

)# 刪除任務

result.revoke(terminate=

true

)# 強制刪除任務

)啟動redis

啟動專案

celery worker -a 專案名-l info

python manage.py runserver

可能出現的異常

valueerror:

not enough values to unpack (expected 3

, got 0

)

解決:

# 安裝eventlet

pip install eventlet

# 啟動時:

celery worker -a 專案名-l info -p eventlet

Django celery執行延時任務

常見的用來執行celery非同步任務的命令 t.delay arg,kwargs value 而還有另乙個命令是不常用的 是可以用來執行延時任務的,其中countdown指定多少秒後執行,expires指定最長等待之間,即過期時間。由於celery延時任務在超過執行時間後仍未執行,可能會發生重複執行...

linux定時任務 at定時任務

at命令是一次性定時計畫任務,at的守護程序atd會以後臺模式執行,檢查作業佇列來執行作業。atd守護程序會檢查系統上的乙個特殊目錄來獲取at命令的提交的作業,預設情況下,atd守護程序每60秒檢查一次目錄,有作業時,會檢查作業執行時間,如果時間與當前時間匹配,則執行此作業。注意 at命令是一次性定...

CronTrigger spring定時任務

crontriggers往往比 trigger更有用,如果您需要基於日曆的概念,而非 trigger完全指定的時間間隔,的發射工作的時間表。crontrigger,你可以指定觸發的時間表如 每星期五中午 或 每個工作日9 30時 甚至 每5分鐘一班9 00和10 00逢星期一上午,星期三星期五 即便...