【问题标题】:Write output to Blob in Azure Functions将输出写入 Azure Functions 中的 Blob
【发布时间】:2022-03-09 17:25:15
【问题描述】:

我正在学习使用 Azure 函数。所以,我可能听起来很愚蠢。我正在编写一个定时器触发函数,它每 1 分钟运行一次,并添加两个数字并写入文件。这很好用,因为我可以将输出写入本地服务器上的文件。

作为第二步,我想将输出写入 blob。下面是代码:

import datetime
import logging  
import azure.functions as func

a=4
b=5
sum=a+b
file_name= open("sum.txt","w+")


def main(mytimer: func.TimerRequest, outputBlob: func.Out[str]) -> None:
    utc_timestamp = datetime.datetime.utcnow().replace(
        tzinfo=datetime.timezone.utc).isoformat()
    if mytimer.past_due:
        global sum
        global file_name
        print("sum:", sum)
        logging.info('The sum has been calculated!')



    logging.info(sum)
    logging.info('Python timer trigger function ran at %s', utc_timestamp)
    with open("sum.txt", "a") as file_name:
        file_name.seek(0)
        file_name.write("\n")
        file_name.write("Sum: %s" % sum)

    outputBlob.set(file_name)

但是,当我运行该函数时,出现以下错误:

[10/02/2020 14:06:00] Executed 'Functions.CalcPayment' (Failed, Id=547f7a3d-03b4-4a02-98e7-f4bfb73e6f5e)
[10/02/2020 14:06:00] System.Private.CoreLib: Exception while executing function: Functions.CalcPayment. System.Private.CoreLib: Result: Failure
[10/02/2020 14:06:00] Exception: TypeError: unable to encode outgoing TypedData: unsupported type "<class 'azure_functions_worker.bindings.generic.GenericBinding'>" for Python type "int"
[10/02/2020 14:06:00] Stack:   File "/usr/local/Cellar/azure-functions-core-tools@3/3.0.2106/workers/python/3.7/OSX/X64/azure_functions_worker/dispatcher.py", line 330, in _handle__invocation_request
[10/02/2020 14:06:00]     pytype=out_type_info.pytype)
[10/02/2020 14:06:00]   File "/usr/local/Cellar/azure-functions-core-tools@3/3.0.2106/workers/python/3.7/OSX/X64/azure_functions_worker/bindings/meta.py", line 83, in to_outgoing_proto
[10/02/2020 14:06:00]     f'unable to encode outgoing TypedData: '
[10/02/2020 14:06:00] .

【问题讨论】:

  • 您介意修正缩进吗?
  • 这有帮助吗?

标签: python azure azure-functions azure-blob-storage


【解决方案1】:

您不需要写入文件,只需创建一个对您的情况有意义的字符串并将其推送到输出变量即可。您可以使用this 示例作为起点。

【讨论】:

  • 谢谢!!是的,这个想法也奏效了。好吧,写入本地文件最初帮助我验证该功能是否正常工作。稍后,删除该位并直接写入 Blob。你知道我们是否可以追加到 blob 中吗?
【解决方案2】:

好的。所以问题很简单。我必须将总和转换为字符串并写入 blob,一切正常。谢谢 !!

【讨论】:

    猜你喜欢
    • 2017-12-13
    • 2023-02-23
    • 2019-08-20
    • 1970-01-01
    • 2017-04-06
    • 2018-05-17
    • 1970-01-01
    • 2019-02-02
    • 2019-03-28
    相关资源
    最近更新 更多