最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python使用celery實現(xiàn)訂單超時取消

 更新時間:2021年08月25日 14:38:18   作者:A༒࿈  
這篇文章主要為大家詳細介紹了python使用celery實現(xiàn)訂單超時取消,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了celery實現(xiàn)訂單超時取消的具體代碼,供大家參考,具體內(nèi)容如下

Celery官方文檔中關(guān)于定時任務(wù)使用的說明

項目目錄結(jié)構(gòu)

我們需要新增一個任務(wù)目錄,例如order:

celey_tasks/
     ├── config.py
     ├── __init__.py
     ├── main.py
     ├── order/
            ├── __init__.py
           └── tasks.py

在main.py中,注冊任務(wù)目錄【注意,接下來后面我們使用django的模型處理,所以必須對django的配置進行引入】

import os

from celery import Celery

# 1. 創(chuàng)建示例對象
app = Celery("luffy")

# 2. 加載配置
app.config_from_object("celery_tasks.config")
# 3. 注冊任務(wù)[自動搜索并加載任務(wù)]
# 參數(shù)必須必須是一個列表,里面的每一個任務(wù)都是任務(wù)的路徑名稱
# app.autodiscover_tasks(["任務(wù)1","任務(wù)2"])
app.autodiscover_tasks(["celery_tasks.order"])

# 4. 在終端下面運行celery命令啟動celery
# celery -A 主程序 worker --loglevel=info
# celery -A celery_tasks.main worker --loglevel=info

接下來,在order任務(wù)目錄下, 創(chuàng)建固定名字的任務(wù)文件tasks.py,代碼:

from celery_tasks.main import app

@app.task(name="check_order")
def check_order():
 print("檢查訂單是否過期!!!")

接下來,我們需要把這個任務(wù)設(shè)置定時任務(wù),所以需要借助Celery本身提供的Crontab模塊。

在配置文件中,對定時任務(wù)進行注冊:

# 任務(wù)隊列的鏈接地址
broker_url = 'redis://127.0.0.1:6379/15'
# 結(jié)果隊列的鏈接地址
result_backend = 'redis://127.0.0.1:6379/14'

from celery.schedules import crontab
from .main import app
# 定時任務(wù)的調(diào)度列表,用于注冊定時任務(wù)
app.conf.beat_schedule = {
 # Executes every Monday morning at 7:30 a.m.
 'check_order_outtime': {
 # 本次調(diào)度的任務(wù)
 'task': 'check_order', # 這里的任務(wù)名稱必須先到main.py中注冊
 # 定時任務(wù)的調(diào)度周期
 # 'schedule': crontab(minute=0, hour=0), # 每周凌晨00:00
 'schedule': crontab(), # 每分鐘
 # 'args': (16, 16), # 注意:任務(wù)就是一個函數(shù),所以如果有參數(shù)則需要傳遞
 },
}

接下來,我們就可以重啟Celery并啟用Celery的定時任務(wù)調(diào)度器

先在終端下,運行celery的定時任務(wù)程序,以下命令:

celery -A celery_tasks.main beat # ycelery.main 是celery的主應(yīng)用文件

然后再新建一個終端,運行以下命令,上面的命令必須先指定:

celery -A celery_tasks.main worker --loglevel=info

定時任務(wù)

經(jīng)過上面的測試以后,我們接下來只需改造上面的任務(wù)函數(shù),用于判斷修改訂單是否超時。

要完成訂單的任務(wù)功能,如果需要調(diào)用django框架的模型操作,那么必須針對django框架進行配置加載和初始化。
main.py,代碼

import os

from celery import Celery

# 1. 創(chuàng)建示例對象
app = Celery("luffy")

# 把celery和django進行組合,識別和加載django的配置文件
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.dev')

# 在當前clery中啟動django框架,對django框架進行進行初始化
import django
django.setup()

# 2. 加載配置
app.config_from_object("celery_tasks.config")
# 3. 注冊任務(wù)[自動搜索并加載任務(wù)]
# 參數(shù)必須必須是一個列表,里面的每一個任務(wù)都是任務(wù)的路徑名稱
# app.autodiscover_tasks(["任務(wù)1","任務(wù)2"])
app.autodiscover_tasks(["celery_tasks.sms","celery_tasks.order"])

# 4. 在終端下面運行celery命令啟動celery
# celery -A 主程序 worker --loglevel=info
# celery -A celery_tasks.main worker --loglevel=info

注意,因為在django中是有時區(qū)配置的,所以,我們在django框架配置中也要修改時區(qū)配置。

任務(wù)代碼tasks.py的實現(xiàn):

from celery_tasks.main import app
from orders.models import Order
from datetime import datetime
from django.conf import settings
@app.task(name="check_order")
def check_order():
 # 查詢出所有已經(jīng)超時的訂單
 # 超時條件: 當前時間 > (訂單生成時間 + 超時時間) =====>>>> (當前時間 - 超時時間) > 訂單生成時間
 now = datetime.now().timestamp()
 timeout_number = now - settings.ORDER_TIMEOUT
 timeout = datetime.fromtimestamp(timeout_number)
 timeout_order_list = Order.objects.filter(order_status=0, created_time__lte=timeout)
 for order in timeout_order_list:
 order.order_status = 3
 order.save()

配置文件,settings/dev.py,代碼:

# 設(shè)置訂單超時超時的時間[單位: 秒]
ORDER_TIMEOUT = 12 * 60 * 60

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python使用Flask框架實現(xiàn)文件上傳實例

    Python使用Flask框架實現(xiàn)文件上傳實例

    這篇文章主要介紹了Python使用Flask庫文件上傳實例,用?Flask?處理文件上傳很容易,只要確保HTML表單中設(shè)置enctype="multipart/form-data"屬性就可以了,需要的朋友可以參考下
    2023-08-08
  • Python的venv虛擬環(huán)境使用及說明

    Python的venv虛擬環(huán)境使用及說明

    這篇文章主要介紹了Python的venv虛擬環(huán)境使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • python根據(jù)距離和時長計算配速示例

    python根據(jù)距離和時長計算配速示例

    這篇文章主要介紹了python根據(jù)距離和時長計算配速示例,需要的朋友可以參考下
    2014-02-02
  • python 實現(xiàn)一個貼吧圖片爬蟲的示例

    python 實現(xiàn)一個貼吧圖片爬蟲的示例

    下面小編就為大家?guī)硪黄猵ython 實現(xiàn)一個貼吧圖片爬蟲的示例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • python查找目錄下指定擴展名的文件實例

    python查找目錄下指定擴展名的文件實例

    這篇文章主要介紹了python查找目錄下指定擴展名的文件,實例分析了Python文件查詢的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • python超參數(shù)優(yōu)化的具體方法

    python超參數(shù)優(yōu)化的具體方法

    在本篇文章里小編給大家整理了一篇關(guān)于python超參數(shù)優(yōu)化的具體方法,有需要的朋友們可以學(xué)習下。
    2021-08-08
  • pandas如何修改特定的值

    pandas如何修改特定的值

    這篇文章主要介紹了pandas如何修改特定的值問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python基于pygame實現(xiàn)圖片代替鼠標移動效果

    Python基于pygame實現(xiàn)圖片代替鼠標移動效果

    這篇文章主要介紹了Python基于pygame實現(xiàn)圖片代替鼠標移動效果,可實現(xiàn)將鼠標箭頭轉(zhuǎn)換成圖形的功能,涉及pygame圖形操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • Python中os模塊功能與用法詳解

    Python中os模塊功能與用法詳解

    這篇文章主要介紹了Python中os模塊功能與用法,總結(jié)分析了Python os模塊基本功能、內(nèi)置函數(shù)、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2020-02-02
  • Python利用多線程同步鎖實現(xiàn)多窗口訂票系統(tǒng)(推薦)

    Python利用多線程同步鎖實現(xiàn)多窗口訂票系統(tǒng)(推薦)

    這篇文章主要介紹了Python利用多線程同步鎖實現(xiàn)多窗口訂票系統(tǒng),主要是利用threading.lock()通過實例代碼相結(jié)合給大家講解的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12

最新評論

周至县| 府谷县| 邹平县| 正镶白旗| 丁青县| 图木舒克市| 岳阳市| 西宁市| 三亚市| 家居| 巴彦县| 泰来县| 延庆县| 灵台县| 秦皇岛市| 鄂伦春自治旗| 阆中市| 新丰县| 黄山市| 登封市| 建阳市| 全椒县| 项城市| 阳西县| 开封市| 临朐县| 朝阳区| 岳阳市| 馆陶县| 博爱县| 信丰县| 五大连池市| 焦作市| 玛曲县| 威信县| 云南省| 慈溪市| 神木县| 凌源市| 石河子市| 靖江市|