首頁 後端開發 Python教學 Azure Functions 與 Python:觸發器

Azure Functions 與 Python:觸發器

Jan 03, 2025 am 02:57 AM

Azure Functions with Python: Triggers

Python 開發人員可以使用 Azure Functions 建立輕量級、可擴充且高效的無伺服器應用程式。在這篇文章中,我們將重點放在觸發器上。

Azure Functions 中的觸發器是什麼?

觸發器是 Azure Functions 的基礎。它們決定如何呼叫函數。每個函數必須有一個觸發器,而觸發器類型決定了該函數可用的資料負載。 Azure 支援各種觸發器,包括:

1. HTTP 觸發器

  • 允許透過 HTTP 請求呼叫函數。
  • 對於建立 API 或回應 Webhook 很有用。
  • 範例:
import azure.functions as func
import datetime
import json
import logging

app = func.FunctionApp()

@app.route(route="http_trigger", auth_level=func.AuthLevel.ANONYMOUS)
def http_trigger(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    return func.HttpResponse("Hello world from HTTP trigger")
登入後複製
登入後複製
登入後複製

參數:

  • route: 指定 HTTP 觸發器將回應的 URL 路徑。在這種情況下,可以在 /api/http_trigger.
  • 存取函數。
  • auth_level: 決定函數的驗證等級。選項包括:
    • 匿名:無需身份驗證。
    • 功能:需要特定功能的鍵。
    • ADMIN:需要管理員級金鑰。

2.定時器觸發

  • 根據時間表執行功能。
  • Cron 表達式用於調度。
  • 範例:
import azure.functions as func
import datetime
import json
import logging

app = func.FunctionApp()

@app.timer_trigger(schedule="0 */5 * * * *", arg_name="myTimer", run_on_startup=False, use_monitor=False)
def timer_trigger(myTimer: func.TimerRequest) -> None:

    if myTimer.past_due:
        logging.info('The timer is past due!')

    logging.info('Python timer trigger function executed.')
登入後複製
登入後複製

參數:

  • schedule: 使用 CRON 表達式定義計劃。這裡,0 */5 * * * * 指定函數從第 0 秒開始每 5 分鐘運行一次。
  • arg_name: 傳遞給函數的參數名稱,代表 TimerRequest 物件。
  • run_on_startup: 如果設定為 True,函數將在應用程式啟動時立即執行。預設值為 False。
  • use_monitor: 決定 Azure 是否應監視錯過的計畫執行。如果為 True,Azure 將確保重試錯過的執行。預設為 True。在此範例中,它設定為 False。

3.斑點觸發器

  • 回應 Azure Blob 儲存體中的變更(例如檔案上傳)。
  • 範例:
import azure.functions as func
import datetime
import json
import logging

app = func.FunctionApp()

@app.blob_trigger(arg_name="myblob", path="blobname", connection="BlobStorageConnectionString")
def BlobTrigger(myblob: func.InputStream):
    logging.info(f"Python blob trigger function processed blob"
                f"Name: {myblob.name}"
                f"Blob Size: {myblob.length} bytes")
登入後複製
登入後複製

參數:

  • arg_name: 指定函數中表示 blob 資料的參數名稱。這是我的blob。
  • path: 函數偵聽的 Blob 儲存容器中的路徑。在此範例中,它是 blobname。
  • connection: 指包含 Blob 儲存帳戶的連接字串的應用程式設定的名稱。這是 BlobStorageConnectionString。

4.隊列觸發

  • 由新增至 Azure 儲存體佇列的訊息觸發。
  • 範例:
import azure.functions as func
import datetime
import json
import logging

app = func.FunctionApp()

@app.route(route="http_trigger", auth_level=func.AuthLevel.ANONYMOUS)
def http_trigger(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    return func.HttpResponse("Hello world from HTTP trigger")
登入後複製
登入後複製
登入後複製

參數:

  • arg_name:指定函數中代表佇列訊息的參數名稱。在這裡,是 azqueue。
  • queue_name:函數偵聽的 Azure 儲存佇列的名稱。在本例中,它是佇列名稱。
  • 連線:指包含 Azure 儲存佇列連接字串的應用程式設定。在這裡,它是 QueueConnectionString。

5.事件中心觸發器

  • 由傳送到 Azure 事件中心的事件觸發。
  • 範例:
import azure.functions as func
import datetime
import json
import logging

app = func.FunctionApp()

@app.timer_trigger(schedule="0 */5 * * * *", arg_name="myTimer", run_on_startup=False, use_monitor=False)
def timer_trigger(myTimer: func.TimerRequest) -> None:

    if myTimer.past_due:
        logging.info('The timer is past due!')

    logging.info('Python timer trigger function executed.')
登入後複製
登入後複製

參數:

  • arg_name: 這指定將在函數中接收事件資料的參數的名稱。在這種情況下,azeventhub將是代表傳入EventHubEvent的變數。
  • event_hub_name: 這表示函數正在偵聽的事件中心的名稱。將 eventhubname 替換為事件中心的實際名稱。
  • 連線: 這是指包含事件中心連接字串的應用程式設定的名稱。確保 Azure Function App 的設定包含名為 EventHubConnectionString 的項目以及對應的連線字串值。

6.服務總線隊列觸發器

  • 由新增至 Azure 服務總線佇列的訊息觸發。
  • 範例:
import azure.functions as func
import datetime
import json
import logging

app = func.FunctionApp()

@app.blob_trigger(arg_name="myblob", path="blobname", connection="BlobStorageConnectionString")
def BlobTrigger(myblob: func.InputStream):
    logging.info(f"Python blob trigger function processed blob"
                f"Name: {myblob.name}"
                f"Blob Size: {myblob.length} bytes")
登入後複製
登入後複製

參數:

  • arg_name: 這指定將在函數中接收訊息資料的參數的名稱。在這種情況下,azservicebus 將是代表傳入 ServiceBusMessage 的變數。
  • queue_name: 這表示函數正在偵聽的服務總線佇列的名稱。將 servicebusqueuename 替換為您的服務總線佇列的實際名稱。
  • connection: 這是指包含服務匯流排連接字串的應用程式設定的名稱。確保 Azure Function App 的設定包含名為 ServiceBusConnectionString 的條目以及對應的連接字串值。

7. ServiceBus 主題觸發器

  • 由發佈到 Azure 服務總線主題的訊息觸發。
  • 範例:
import azure.functions as func
import datetime
import json
import logging

app = func.FunctionApp()

@app.route(route="http_trigger", auth_level=func.AuthLevel.ANONYMOUS)
def http_trigger(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    return func.HttpResponse("Hello world from HTTP trigger")
登入後複製
登入後複製
登入後複製

參數:

  • arg_name:指定函數中代表服務總線訊息的參數名稱。在這裡,它是 azservicebus。
  • subscription_name:觸發器偵聽的服務總線訂閱的名稱。
  • topic_name:觸發器偵聽的服務總線主題的名稱。在此範例中,它是 servicebustopicname。
  • 連線:指包含 Azure 服務匯流排命名空間的連線字串的應用程式設定。這裡是ServiceBusConnectionString。

其他觸發因素

  • Cosmos DB 觸發器: 利用變更來源機制來回應 Azure Cosmos DB 資料庫中的變更(插入和更新)。
  • Dapr 發布輸出綁定: 允許函數在執行期間將訊息發佈到 Dapr 主題,從而促進微服務之間的通訊。
  • Dapr 服務呼叫觸發器: 允許其他支援 Dapr 的服務直接呼叫函數,支援服務到服務通訊。
  • Dapr 主題觸發器: 執行函數以回應透過 Dapr 的發布-訂閱訊息傳遞模式發佈到特定主題的訊息。
  • 事件網格觸發器:當事件傳送到 Azure 事件網格主題時啟動函數,從而實現反應式事件驅動架構。

以上是Azure Functions 與 Python:觸發器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1655
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1252
29
C# 教程
1225
24
Python vs.C:申請和用例 Python vs.C:申請和用例 Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

Python:遊戲,Guis等 Python:遊戲,Guis等 Apr 13, 2025 am 12:14 AM

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

您可以在2小時內學到多少python? 您可以在2小時內學到多少python? Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

2小時的Python計劃:一種現實的方法 2小時的Python計劃:一種現實的方法 Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python與C:學習曲線和易用性 Python與C:學習曲線和易用性 Apr 19, 2025 am 12:20 AM

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

Python:探索其主要應用程序 Python:探索其主要應用程序 Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

Python和時間:充分利用您的學習時間 Python和時間:充分利用您的學習時間 Apr 14, 2025 am 12:02 AM

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python:自動化,腳本和任務管理 Python:自動化,腳本和任務管理 Apr 16, 2025 am 12:14 AM

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。

See all articles