Функция HTTPtrigger Azure не пишет в очередь хранилища Azure - PullRequest
0 голосов
/ 17 апреля 2019

Я ожидаю, что приведенный ниже код будет принимать тело JSON из func.HttpRequest, записать это сообщение в очередь хранилища Azure и затем вернуть вызывающему сообщение об успешном выполнении. Это работает за исключением того, что моя очередь хранения пуста.

import logging

import azure.functions as func


def main(req: func.HttpRequest,
         orders: func.Out[func.QueueMessage]) -> func.HttpResponse:


    logging.info('Python HTTP trigger function processed a request.')
    message = req.get_json()
    logging.info(message)
    orders.set(message)
    return func.HttpResponse(
        body=”success”,
        status_code=200
    )

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": "orders",
    "queueName": "preprocess",
    "connection": "orders_STORAGE"
  }
  ]
}

Local.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_ER_RUNTIME": "python",
    "AzureWebJobsStorage": "AzureWebJobsStorage",
    "orders_STORAGE": "DefaultEndpointsProtocol=https;AccountName=orders;AccountKey=*****;EndpointSuffix=core.windows.net"
  }
}

Терминальный выход:

... [17.04.2009 17:54:39] Выполнение 'Functions.QueueTrigger' (Reason = 'Обнаружено новое сообщение очереди в' preprocess '.', Id = f27fd7d1-1ace - **** - **** - 00fb021c9ca4)

[17.04.2009 17:54:39] Детали триггера: MessageId: d28f96c5 - **** - **** - 9191-93f96a4423de, DequeueCount: 1, InsertionTime: 17.04.2009 5: 54:35 +00: 00

[17.04.2009 17:54:39] ИНФОРМАЦИЯ: Получено FunctionInvocationRequest, идентификатор запроса: 5bf59a45 - **** - **** - 9705-173d9635ca94, идентификатор функции: fa626dc9 - **** - **** - a59b-6a48f08d87e1, код вызова: f27fd7d1-1ace - **** - **** - 00fb021c9ca4

[17.04.2009 17:54:39] Функция триггера очереди Python обработала элемент очереди: name2

[17.04.2009 17:54:39] ИНФОРМАЦИЯ: Успешно обработано FunctionInvocationRequest, идентификатор запроса: 5bf59a45 - **** - **** - 9705-173d9635ca94, идентификатор функции: fa626dc9-3313 - ** ** - **** 6a48f08d87e1, код вызова: f27fd7d1-1ace - **** - **** - 00fb021c9ca4

[17.04.2009 17:54:39] Выполнено «Functions.QueueTrigger» (успешно, Id = f27fd7d1-1ace - **** - **** - 00fb021c9ca4)

ИНФОРМАЦИЯ: Успешно обработано

- заставляет меня думать, что это сработало, и я должен увидеть сообщение в своей очереди, но оно пустое.

Почему я не вижу сообщения в очереди?

Спасибо

1 Ответ

0 голосов
/ 18 апреля 2019

Вывод вашего терминала показывает, что QueueTrigger обнаружил новое сообщение preprocess, поэтому фактически оно было записано.

Что касается сообщений в вашей очереди, потому что они обрабатываются вашей функцией. После доставки сообщения оно будет удалено из очереди. Вот почему ваша очередь пуста.

И из учебника: Проверьте функцию , вы также можете найти описание:

Вернувшись в Storage Explorer, нажмите «Обновить» и убедитесь, что сообщение был обработан и больше не находится в очереди.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...