Azure 函数队列为空
Posted
技术标签:
【中文标题】Azure 函数队列为空【英文标题】:Azure Functions Queue empty 【发布时间】:2021-02-25 05:10:02 【问题描述】:我是 Azure 的新手。如果问题是基本的,请原谅我。 我有以下 http 触发器,旨在将消息流式传输到队列存储。
import logging
import azure.functions as func
def main(req: func.HttpRequest, msg: func.Out[func.QueueMessage]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
input_msg = req.params.get('message')
logging.info(input_msg)
msg.set(input_msg)
return func.HttpResponse(status_code=200, body='GotIt')
在本地进行了测试,并且;
部署它并且运行正常
但是,当我检查队列时,它是空的;
问题;
-
为什么队列是空的,我可以做些什么来确保它注册消息?
是不是因为我的代码没有写消息而没有锁定?
我们将非常感谢您的帮助。
【问题讨论】:
在本地发送消息时也没有发送消息到队列? 是的,它没有......而且无法弄清楚问题是什么。 @Bowman Zhu 从我的本地运行它打印GotIt
。没有任何东西进入队列
我已经发布了一个答案,你可以试试看问题是否还在你这边。
【参考方案1】:
更新:
function.json
"scriptFile": "__init__.py",
"bindings": [
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
,
"type": "http",
"direction": "out",
"name": "$return"
,
"type": "queue",
"direction": "out",
"name": "msg",
"queueName": "outqueue",
"connection": "AzureStorageQueuesConnectionString"
]
local.settings.json
"IsEncrypted": false,
"Values":
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "python",
"AzureStorageQueuesConnectionString":"DefaultEndpointsProtocol=https;AccountName=0730bowmanwindow;AccountKey=xxxxxx;EndpointSuffix=core.windows.net"
host.json
"version": "2.0",
"logging":
"applicationInsights":
"samplingSettings":
"isEnabled": true,
"excludedTypes": "Request"
,
"extensionBundle":
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[1.*, 1.2.0)"
原答案:
我做了一个简单的测试。下面的代码在我这边运行良好,你可以试试:
import logging
import azure.functions as func
def main(req: func.HttpRequest,msg: func.Out[str]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
input_msg = req.params.get('message')
logging.info(input_msg)
msg.set(input_msg)
return func.HttpResponse(
"This is a test.",
status_code=200
)
这是文档:
https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue-output?tabs=python#example
发送:
队列存储:
【讨论】:
我会尝试恢复 仍然没有写入任何内容 @wwnde 我测试了你的相同代码。我工作没有问题。所以你的代码应该没有问题。您的存储帐户有任何限制吗?您还可以查看我更新的配置设置。 是否有我需要检查的队列设置? @wwnde 如果您使用连接字符串,您应该可以完全访问队列。你能展示一下你的 AzureStorageQueuesConnectionString 的结构吗?(不需要展示账户密钥和账号)以上是关于Azure 函数队列为空的主要内容,如果未能解决你的问题,请参考以下文章