当前位置: 首页 > 知识库问答 >
问题:

使用python在函数应用程序中绑定来自Azure blob的输入

袁奇文
2023-03-14

我在 Azure blob 存储中有一个 csv 文件,我想打开该文件并根据用户输入获取某些数据。我有两个问题:

1)空AzureWebJobStorage值在local.settings.json

我尝试使用AzureWebJobsStorage输入绑定,但值似乎为空。我不知道如何在local.settings.json中编辑什么值。因此,得到这个错误:

已执行Functions.HttpExample(失败,Id=3a9309d6-7019-4de6-a8d2-43c89921b0f6)[18-Feb-20 9:40:36 AM]System.Private.CoreLib:执行函数时异常:Functions.HttpExample.Microsoft.Azure.WebJobs.Host:值不能为空。

我用我的存储帐户的连接字符串更新了该值。它仍然不起作用。

function.json:

{
  "type": "blob",
  "direction": "in",
  "name": "container_name",
  "path": "blob_name/file_name.csv",
  "connection": "AzureWebJobsStorage"
}

我使用了上面正确的变量名吗?因为我还收到了另一个错误:

指定的blob不存在。

但是blob存在于存储器中。

2)如何显示csv中的所有数据(假设上述问题已经解决)

这是我在__init__. py中的当前代码:

def main(req: func.HttpRequest, inputblob: func.InputStream) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    section = req.params.get('section')
    bound = req.params.get('bound')
    km_location = req.params.get('km_location')
    location = req.params.get('location')
    if not section:
        try:
            req_body = req.get_json()
        except ValueError:
            pass
        else:
            section = req_body.get('section')

    if section and bound and km_location:
        #pass the following user input to the following function and use them to retrieve remaining info
        #from csv (stored in blob) to user.
        result(section, km_location, bound, location).getResult() 

        return func.HttpResponse(f"Hello {section}, {bound}!")

共有1个答案

董俊
2023-03-14

关于<code>函数中关于属性的定义。json您可以参考此文档:配置。

name 是表示函数代码中的 blob 的变量。它在函数代码中应该是相同的,并且可以是所需的任何变量。

以下是我的测试函数.json,您也可以参考我提供的链接中的示例。

{
      "name": "inputBlob",
      "type": "blob",
      "path": "test/test.csv",
      "connection": "AzureWebJobsStorage",
      "direction": "in"
    }

关于如何读取csv文件,你可以参考我的函数代码

import logging
import azure.functions as func
import csv
import codecs


def main(req: func.HttpRequest,inputBlob: func.InputStream) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    reader=csv.reader(codecs.iterdecode(inputBlob,'utf-8'))
    for line in reader:
        logging.info(line)

    name = req.params.get('name')
    if not name:
        try:
            req_body = req.get_json()
        except ValueError:
            pass
        else:
            name = req_body.get('name')

    if name:
        return func.HttpResponse(f"Hello {name}!")
    else:
        return func.HttpResponse(
             "Please pass a name on the query string or in the request body",
             status_code=400
        )

这是我的测试结果,希望这能帮助你,如果你还有其他问题,请随时告诉我。

 类似资料:
  • 问题是,就应用程序生命周期处理和易于使用而言,这种体系结构是否可以被认为是安全的? Update:每次创建新的活动并希望获得数据时,它可以获得ApplicationContext的BehaviorSubject,然后订阅它,Subject将发出最后发出的值;我为什么要这样做?例如。假设你有新闻项目,你获取了新闻提要,你想启动后台任务来获取新闻项目的全部内容,在这种情况下,我可以在你滚动新闻列表时开

  • 我需要帮助解决这个问题; 我知道call()方法将引用没有属性命名的人对象。 有没有办法使用bind()call()或apply()方法打印“Louie是Benjamin的狗”

  • 我正在尝试编写一个Python实用函数,它接受本地定义类的对象,并在PySpark DataFrame<code>withColumn<code>调用中使用该类的一个方法作为用户定义函数(UDF)。实用功能签名为: 在类中,我有一个想用作UDF的方法。方法定义是: 在< code>spark_analyze中,我执行以下操作,其中< code>lp是传入的< code>LogProcessor类型

  • 问题内容: 我有一个通过SvcUtil生成的肥皂服务的WCF客户端,我想通过edge.js使用 是否可以使用edge.js从app.config加载服务模型绑定,还是必须在c#中构造绑定? 如果可以,app.config应该放在哪里? 谢谢, 加雷斯。 问题答案: 当使用Edge.js在Node.js应用程序中运行C#代码时,应用程序配置文件位于并且应该位于文件旁边。