python-3.x - Python 中 Azure Functions 的 Azure 存储队列集成行为异常
问题描述
我在 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 类。
在此先感谢,斯维特
解决方案
输出绑定在函数执行结束时处理,这就是为什么您只看到最后一个条目的原因;这是主持人唯一知道的功能。
相反,在您的循环中,尝试生成一个 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)
推荐阅读
- python - 逐行运行python时使VSCODE导航到脚本目录?
- node.js - 当服务器可以走两条不同的路线时如何获取客户端?
- java - 访问 API 基本路径时如何重定向到 API 索引页面?
- c++ - 如何正确读取文本文件中的单词并反转偶数单词的顺序?
- java - 是否有任何安全的方法可以为两个不同的 JRE 序列化/反序列化 Java Lambda?
- linux - 在 bash shell 中计算十进制数中有多少位小数
- amazon-web-services - 如何将 s3 存储桶数据移动到 Redshift?
- java - 在 Android (Java) 中,您可以在两个片段之间使用 LiveData 和共享 ViewModel 传递照片吗?
- java - 如何根据这里显示的孩子调整回收站视图的大小
- sql-server - 将 MS Access 报告存储到 SQL Server