繁体   English   中英

如何使用 python 从 Azure 函数 Blob 触发器获取多个输出?

[英]How get multiple output from Azure Function Blob Trigger using python?

我在使用 python 为 Azure 中的 blobtrigger 案例定义多个输出时遇到问题。 如何将 WhileLoop 的所有尝试设置为 Outputblob? 现在,我只得到最后一个实体(替换以前的实体)。 我把代码 --init--.py:

import logging
import json
import azure.functions as func
from urllib.request import urlopen

#from azure.storage import blob

def main(inputblob: func.InputStream,
        outputblob: func.Out[func.InputStream]):
    logging.info(f"Python blob trigger function processed blob \n"
                 f"Name: {inputblob.name}\n"
                 f"Blob Size: {inputblob.length} bytes")
    
    blob=  inputblob.read()
    blob_invoices= json.loads(blob)
    Number_of_Invoices=int(len(blob_invoices))
    j=0
    while j < Number_of_Invoices:
        Invoice_url= blob_invoices[j]["invoiceFile"]['url']
        invoice_opening= urlopen(Invoice_url)
              
        invoice_content= invoice_opening.read()
        outputblob.set(invoice_content)

if __name__ == "__main__":
    main()

和函数.json:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "inputblob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "data4test1/{name}.json",
      "connection": "data4test_STORAGE"
    },
    {
      "name": "outputblob",
      "type": "blob",
      "direction": "out",
      "path": "data4test2/{name}.xml",
      "connection": "data4test_STORAGE"
    }

  ],
  "disabled": false

下面的 init 示例代码将帮助您使用 python 从 Azure 函数 blob 触发器设置多个输出绑定:

import logging
import azure.functions as func


def main(inputblob: func.InputStream,
        outputblob1: func.Out[func.InputStream],
        outputblob2: func.Out[func.InputStream],
        outputblob3: func.Out[func.InputStream]):
    logging.info(f"Python blob trigger function processed blob \n"
                 f"Name: {inputblob.name}\n"
                 f"Blob Size: {inputblob.length} bytes")
    outputblob1.set(inputblob)
    outputblob2.set(inputblob)
    outputblob3.set(inputblob)

function.json 文件:

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "inputblob",
      "type": "blobTrigger",
      "direction": "in",
      "dataType": "binary",
      "path": "blobcontainer/{name}",
      "connection": "AzureWebJobsStorage"
    },
    {
      "name": "outputblob1",
      "type": "blob",
      "path": "uploadblobcontainer/{blobtrigger}-first",
      "dataType": "binary",
      "connection": "AzureWebJobsStorage",
      "direction": "out"
    },
    {
      "name": "outputblob2",
      "type": "blob",
      "path": "uploadblobcontainer/{blobtrigger}-second",
      "dataType": "binary",
      "connection": "AzureWebJobsStorage",
      "direction": "out"
    },
    {
      "name": "outputblob3",
      "type": "blob",
      "path": "uploadblobcontainer/{blobtrigger}-third",
      "dataType": "binary",
      "connection": "AzureWebJobsStorage",
      "direction": "out"
    }
  ]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM