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)
(result.id)
# 任務id
(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逢星期一上午,星期三星期五 即便...