簡體   English   中英

如何將Azure函數(Python)用作Azure數據工廠中的HTTP數據集

[英]How to use an Azure Function (Python) as a HTTP dataset in an Azure Data Factory

嘗試在基於Azure函數(HTTP觸發器)的Azure數據工廠中創建數據集(HTTP)時,我一直保持連接超時:

  The cloud service request timed out. Please retry. Activity ID:9d70efcd-c842-4484-9313-4872208a2a9e

但是,如果我從其他地方(例如apitester.com)調用函數, 則會得到所需的響應:

函數HttpTriggerPython32的源代碼如下:

import os, sys, json
from datetime import datetime

postreqdata = json.loads(open(os.environ['req']).read())

responseData = {
    'timestamp' : datetime.now(pytz.timezone("Europe/Zurich")).strftime("%Y-%m-%d %H:%M:%S"),
    'python_version' : sys.version
}

response = open(os.environ['res'], 'w')
response.write(str(responseData))

我已經成功將其他第三方HTTP服務添加為數據工廠中的數據集。 另外,我已經設法通過使用Web活動來調用該函數。 僅當我嘗試將函數用作數據集源時,才會發生錯誤。

要將函數添加為數據工廠數據集,我使用以下參數創建了一個新的數據集:

{
    "name": "HttpFile1",
    "properties": {
        "linkedServiceName": {
            "referenceName": "AF_srfscadapa_af1",
            "type": "LinkedServiceReference"
        },
        "type": "HttpFile",
        "typeProperties": {
            "format": {
                "type": "JsonFormat",
                "filePattern": "setOfObjects"
            },
            "relativeUrl": "HttpTriggerPython32?code=L5WVNJh8loDv3mZFcD/AKatNRoYfYoHlDbEBk4AEGrbDA39ddAXsyg==",
            "requestMethod": "Post",
            "requestBody": "{\n    \"group_name\": \"Azure POC\"\n}"
        }
    }
}

鏈接服務“ AF_srfscadapa_af1”的配置如下:

Azure Functions(以及幾乎所有無服務器平台)必須處理冷啟動延遲問題,在此問題中,一段時間不使用后對功能應用程序的第一次請求將花費更長的時間。 這是因為平台需要在處理請求之前實例化應用程序的實例。 這會給請求增加不平凡的時間,這可能會增加您的延遲,超過Azure Data Lake的默認超時所允許的延遲。

根據Azure Data Factory文檔 ,以HTTP為源的復制活動具有超時字段。 將其配置為更高的值可能會解決此問題。

手動定義源的所有列並增加復制活動中的超時可以解決該問題。

我使用的是Data Factory GUI,無法為預覽源或導入架構設置超時。 因此,在這種特殊情況下,“導入模式”功能根本不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM