」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Django 中創建一個簡單的調度程序

如何在 Django 中創建一個簡單的調度程序

發佈於2024-11-08
瀏覽:617

How to create a simple scheduler in Django

如果您需要每X 分鐘/秒等運行一個函數來進行一些清理,觸發一些操作,您可以在線程模組和django 自訂cli 的幫助下執行一個簡單的調度程序命令。

假設我想每 5 秒呼叫一個函數以在外部 API 上發布一些內容。

在您的 django 應用程式中建立一個名為 management 的資料夾/包,在該資料夾中建立另一個名為commands 的資料夾。在命令資料夾中建立一個名為 runposter.py 的模組。最後你會得到類似這樣的結構 yourapp/management/commands/runposter.py.

在此程式碼中,我們使用一個運行 while 循環的線程,只要它不每 5 秒停止一次。將 print("posting") 替換為您要執行的函數/邏輯。

# runposter.py
import time
from threading import Thread, Event
from django.conf import settings
from django.core.management.base import BaseCommand


stop_event = Event()


def my_job():
    while not stop_event.is_set():
        try:
            print("posting")
            time.sleep(5)
        except KeyboardInterrupt:
            break


class Command(BaseCommand):
    help = "Run Poster."

    def handle(self, *args, **options):

        poster = Thread(target=my_job)

        try:
            print("Starting poster...")
            poster.start()
            while poster.is_alive():
                poster.join(timeout=1)
        except KeyboardInterrupt:
            print("Stopping poster...")
            stop_event.set()
            poster.join()
            print("Poster shut down successfully!")

很好,現在打開另一個終端機視窗並運行 python manage.py runposter。如您所見,命令 runposter 是根據我們給出的模組名稱建立的。

當然,對於更複雜的東西,我建議使用 rq-scheduler 或 celery 週期性任務或 django-q。

但是,對於簡單的情況,這應該足夠好了。

版本聲明 本文轉載於:https://dev.to/climentea/how-to-create-a-simple-scheduler-in-django-1o54?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 處理日期和時區轉換:為什麼正確的 UTC 轉換很重要
    處理日期和時區轉換:為什麼正確的 UTC 轉換很重要
    在检索选定日期范围内的数据时,我们注意到我们的计算存在一定偏差。然而,当我们将日期减少一天时,数据完全匹配! 嗯……我们的代码中处理日期的方式可能存在问题。也许时区处理不正确——是的,我是对的! 当构建涉及来自不同时区的用户的应用程序时,正确处理日期可能很棘手。在 UTC 中存储日期是确保一致性的...
    程式設計 發佈於2024-11-08
  • gRPC:你住在哪裡?你吃什麼?
    gRPC:你住在哪裡?你吃什麼?
    A primeira vez que ouvi falar sobre RPC foi em uma aula de sistema distribuídos, ainda quando estava cursando a graduação em Ciência da Computação. Ac...
    程式設計 發佈於2024-11-08
  • 如何為 3D 模型實現平滑的切線空間法線?
    如何為 3D 模型實現平滑的切線空間法線?
    如何實現平滑的切線空間法線修復因切線、副法線的每面計算而導致的模型的多面外觀,和法線向量,必須考慮模型預先提供的法線。 每頂點法線平均第一種方法涉及計算每面法線和將其分佈在形成面的頂點之間。每個頂點維護一個初始值為零的累加器向量,並將面法線的 X、Y 和 Z 分量添加到每個涉及頂點的累加器中。此外,...
    程式設計 發佈於2024-11-08
  • 透過簡單範例了解 JavaScript 中的呼叫、應用和綁定
    透過簡單範例了解 JavaScript 中的呼叫、應用和綁定
    透過簡單範例了解 JavaScript 中的呼叫、應用和綁定 使用 JavaScript 時,您可能會遇到三種強大的方法:呼叫、應用和綁定。這些方法用於控制函數中 this 的值,從而更輕鬆地處理物件。讓我們透過簡單的範例來分解每種方法,以了解它們的工作原理。 1...
    程式設計 發佈於2024-11-08
  • 大括號放置對 JavaScript 執行有什麼影響?
    大括號放置對 JavaScript 執行有什麼影響?
    大括號放置和 JavaScript 執行在 JavaScript 中,大括號的放置可以顯著改變程式碼的行為和輸出。如提供的程式碼片段所示,大括號位置的單一變更可能會導致截然不同的結果。 自動分號插入和未定義返回當左大括號時被放置在一個新行上,如第一個程式碼片段一樣,自動分號插入開始。這是 JavaS...
    程式設計 發佈於2024-11-08
  • 學習彈性搜尋
    學習彈性搜尋
    Elasticsearch 是一個基於 Apache Lucene 函式庫所建構的強大開源搜尋和分析引擎。它旨在處理大量數據並有效執行複雜的搜尋。 Elasticsearch 的主要功能與功能包括: 分散式架構:Elasticsearch是一個分散式系統,可以水平擴展以處理大量資料和流量。 近距...
    程式設計 發佈於2024-11-08
  • 股息率:基於Python的金融項目的重要指標
    股息率:基於Python的金融項目的重要指標
    股息率:基於Python的金融項目的重要指標 在財務分析領域,股利對許多投資人來說非常重要。特別是如果您正在開發一個處理財務數據或自動化投資策略的Python專案,計算和分析股息率可能是關鍵要素。這篇關於股息率的 Rankia 文章詳細解釋了該利率的運作方式以及為什麼它對投資者如此...
    程式設計 發佈於2024-11-08
  • 如何透過平行或分散式測試在多個瀏覽器中執行WebUI功能檔?
    如何透過平行或分散式測試在多個瀏覽器中執行WebUI功能檔?
    使用平行或分散式測試在多個瀏覽器中執行WebUI 功能檔案使用並行測試對多個瀏覽器(Zalenium ) 執行WebUI 功能檔案執行器或分散式測試,使用下列方法:並行運行器和場景大綱:使用場景大綱建立一個表格,其中的行代表不同的瀏覽器配置。 在 Karate-config.js 檔案中新增並行運行...
    程式設計 發佈於2024-11-08
  • SOAP 與 REST API:了解主要差異
    SOAP 與 REST API:了解主要差異
    在 Web 服務領域,SOAP(簡單物件存取協定)和 REST(表述性狀態傳輸)是兩種廣泛使用的(soap 與 Rest API)架構。兩者都用作系統之間的通訊協議,但它們在設計、使用和性能方面存在顯著差異。了解這些差異對於開發人員和企業在選擇適合其需求的正確解決方案時至關重要。 什麼是 SOA...
    程式設計 發佈於2024-11-08
  • 如何使用 CSS 自訂文字下劃線顏色?
    如何使用 CSS 自訂文字下劃線顏色?
    使用 CSS 自訂文字下劃線顏色在網頁設計中,為文字添加下劃線是強調或突出顯示訊息的常見做法。但是,如果您想透過更改下劃線的顏色來添加獨特的觸感該怎麼辦?這可能嗎? 是的,可以使用 CSS 來變更文字下方線條的顏色。您可以使用以下兩種方法:方法 1:使用 text-decoration-color方...
    程式設計 發佈於2024-11-08
  • 在 JavaScript 中實現點擊劫持防禦技術
    在 JavaScript 中實現點擊劫持防禦技術
    点击劫持等复杂攻击的出现使安全成为当今网络世界的首要问题。通过欺骗消费者点击与他们最初看到的内容不同的内容,攻击者部署了一种名为“点击劫持”的邪恶方法,这可能会带来灾难性的后果。此类攻击有可能诱骗人们下载恶意软件、发送私人信息,甚至做他们无意的事情,例如购买任何东西。为了防止此类攻击,JavaScr...
    程式設計 發佈於2024-11-08
  • 為什麼我的浮動 Div 不調整後續 Div 的大小?
    為什麼我的浮動 Div 不調整後續 Div 的大小?
    Float 不調整Div 大小之謎當使用CSS float 時,假設後續元素將左對齊而不是流到新的元素上線。然而,在某些情況下,例如提供的範例,下面的 div 繼續跨越整個寬度,而不是從第一個 div 的右側開始。 為了理解這種行為,我們深入研究 float 的複雜性定位。當元素浮動時(在本例中為 ...
    程式設計 發佈於2024-11-08
  • 使用 PYTHON 將資料導入 MYSQL
    使用 PYTHON 將資料導入 MYSQL
    介紹 手動將資料匯入資料庫,尤其是當資料庫中有多個表格時,不僅很煩人,而且還很耗時。透過使用 python 庫可以使這變得更容易。 從kaggle下載繪畫資料集。繪畫資料集由 8 個 csv 檔案組成,我們將使用簡單的 python 腳本將其匯入到資料庫中,而不是手動將資料匯入到...
    程式設計 發佈於2024-11-08
  • MySQL 基本運算子及其應用
    MySQL 基本運算子及其應用
    MySQL 運算子是開發人員的關鍵工具,可實現精確的資料操作和分析。它們涵蓋了一系列功能,包括賦值、資料比較和複雜模式匹配。無論您是處理 JSON 資料還是根據條件過濾記錄,了解這些運算子對於高效的資料庫管理都至關重要。 本指南介紹了最重要的MySQL運算符,並透過實際範例示範如何使用它們,使開發...
    程式設計 發佈於2024-11-08
  • 如何測驗 Cron 作業:完整指南
    如何測驗 Cron 作業:完整指南
    Cron 作业在许多系统中对于调度任务、自动化流程和按指定时间间隔运行脚本至关重要。无论您是维护 Web 服务器、自动备份还是运行例行数据导入,cron 作业都能让您的操作顺利运行。但与任何自动化任务一样,它们必须经过彻底测试以确保可靠性和准确性。 在本文中,我们将探讨如何有效地测试 cron 作...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3