#python-3.x #azure-functions #azure-queues
#python-3.x #azure-функции #azure-очереди
Вопрос:
Я новичок в 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')
Развернул его, и он также работает нормально
Однако, когда я проверяю очередь, она пуста;
Вопросы;
- Почему очередь пуста и что я могу сделать, чтобы убедиться, что она регистрирует сообщения?
- Это не блокировка, потому что мой код не пишет сообщения?
Ваша помощь будет высоко оценена.
Комментарии:
1. Также не отправлялось сообщение в очередь, когда вы делали это на локальном?
2. Да, это не так … и не могу просто понять, в чем проблема.
3. @ Bowman Zhu из моего локального запуска он печатает
GotIt
. В очередь ничего не попадает4. Я опубликовал ответ, вы можете попробовать посмотреть, по-прежнему ли проблема возникает на вашей стороне.
Ответ №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
)
Это документ:
Отправить:
Хранилище очередей:
Комментарии:
1. Я постараюсь вернуться
2. по-прежнему ничего не записывается
3. @wwnde Я тестирую тот же код, что и вы. Я работаю без проблем. Поэтому у него не должно быть проблем с вашим кодом. Какой-либо лимит вашей учетной записи хранилища? Вы также можете проверить обновленные параметры конфигурации.
4. существуют ли настройки очереди, которые, возможно, мне нужно проверить?
5. @wwnde Если вы используете строку подключения, у вас должен быть полный доступ к очереди. Можете ли вы показать структуру вашей AzureStorageQueuesConnectionString? (Нет необходимости показывать ключ учетной записи и учетную запись)