Очередь функций Azure пуста

#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. Это не блокировка, потому что мой код не пишет сообщения?

Ваша помощь будет высоко оценена.

Комментарии:

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
    )
  

Это документ:

https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-queue-output?tabs=python#example

Отправить:

введите описание изображения здесь

Хранилище очередей:

введите описание изображения здесь

введите описание изображения здесь

Комментарии:

1. Я постараюсь вернуться

2. по-прежнему ничего не записывается

3. @wwnde Я тестирую тот же код, что и вы. Я работаю без проблем. Поэтому у него не должно быть проблем с вашим кодом. Какой-либо лимит вашей учетной записи хранилища? Вы также можете проверить обновленные параметры конфигурации.

4. существуют ли настройки очереди, которые, возможно, мне нужно проверить?

5. @wwnde Если вы используете строку подключения, у вас должен быть полный доступ к очереди. Можете ли вы показать структуру вашей AzureStorageQueuesConnectionString? (Нет необходимости показывать ключ учетной записи и учетную запись)