Python 中 Azure Functions 的 Azure 存储队列集成行为异常

Azure Storage queue integration for Azure Functions in Python behaves abnormally

我在版本 3.6.4 的环境中 Python (v1) 运行 中有一个 Azure 函数。我正在尝试通过标准语法将简单的字符串作为单独的消息放入输出存储队列:

for SomeStrVar in ListOfStrVars:
    outputQueue = open(os.environ['outputQueueItem'],'w')
    outputQueue.write(SomeStrVar)
    outputQueue.close()

其中 outputQueueItem 是为函数配置的输出队列。 发生的情况是,我没有在目标队列中以 X 条消息结束,而是只得到列表中的最后一条消息。即使为列表中的每个元素打开和关闭文件句柄,似乎同一条消息在队列中被一遍又一遍地覆盖。

对我来说这不是正常行为,但我必须说我是 Python 的新手,可能是因为我正在监督这里的某些事情。

我们非常感谢任何有关如何编写它以按预期工作的建议。在那之前我切换到直接使用 QueueService class.

提前致谢,斯维特

输出绑定在函数执行结束时处理,这就是为什么您只看到最后一个条目的原因;它是宿主唯一知道的函数。

相反,在您的循环中,尝试生成一个 JSON 数组,然后在最后将其设置为输出值。所以你最终会写出像 ['SomeValue1','SomeValue2','SomeValue3'] 这样的东西作为绑定的一部分。然后主机将看到该数组并使用每个值创建一条消息。

我不是 python 专家,但像这样:

arr = { "a", "b", "c", "d" }
output = "["
for i in arr:
  output += "'%s'," % i  
output = output[:-1]
output += "]"

# write to the output binding
f = open(os.environ['output'], 'w')
f.write(output)