【问题标题】:Azure HTTPtrigger function not writing to Azure Storage QueueAzure HTTPtrigger 函数未写入 Azure 存储队列
【发布时间】:2019-04-17 19:49:55
【问题描述】:

我希望下面的代码从 func.HttpRequest 获取 JSON 正文,将该消息写入 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
    )

函数.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"
  }
}

终端输出:

… [4/17/2019 5:54:39 PM] 执行“Functions.QueueTrigger”(原因=“在“预处理”中检测到新队列消息。”,ID=f27fd7d1-1ace-****-****- 00fb021c9ca4)​​p>

[4/17/2019 5:54:39 PM] 触发器详细信息:MessageId:d28f96c5-****-****-9191-93f96a4423de,DequeueCount:1,InsertionTime:4/17/2019 5:下午 54:35 +00:00

[2019 年 4 月 17 日下午 5:54:39] 信息:收到 FunctionInvocationRequest,请求 ID:5bf59a45-****-****-9705-173d9635ca94,函数 ID:fa626dc9-****- ****-a59b-6a48f08d87e1,调用 ID:f27fd7d1-1ace-****-****-00fb021c9ca4

[4/17/2019 5:54:39 PM] Python 队列触发函数处理了一个队列项:name2

[2019 年 4 月 17 日下午 5:54:39] 信息:已成功处理 FunctionInvocationRequest,请求 ID:5bf59a45-****-****-9705-173d9635ca94,函数 ID:fa626dc9-3313-** **-****6a48f08d87e1,调用 ID:f27fd7d1-1ace-****-****-00fb021c9ca4

[4/17/2019 5:54:39 PM] 执行“Functions.QueueTrigger”(成功,Id=f27fd7d1-1ace-****-****-00fb021c9ca4)

INFO:已成功处理

– 让我认为这有效,我应该在队列中看到一条消息,但它是空白的。

为什么我没有看到队列中的消息?

谢谢

【问题讨论】:

    标签: python-3.x azure azure-functions azure-queues


    【解决方案1】:

    您的终端输出显示 QueueTrigger 检测到新消息 preprocess,因此实际上它已被写入。

    至于您的队列中没有消息,因为它已处理到您的函数中。消息传递后,它将从队列中删除。这就是为什么你的队列是空白的。

    从教程中:Test the function,您还可以找到描述:

    返回存储资源管理器,单击刷新并验证消息 已处理,不再在队列中。

    【讨论】:

    • 该文档用于在创建消息时读取队列的函数。 (创建由 Azure 队列存储触发的函数)我的函数在写入队列时出现问题。 -谢谢。
    • 这很奇怪,当我从门户创建一条消息然后启动我的应用程序时,消息消失了,这个函数应该写入队列,而不是读取它。
    • 乔治,谢谢。我忘记了我在使用不同的函数时创建了一个 queuetrigger 函数并且没有删除示例代码。所以你是正确的,它正在被创建,然后立即传递给另一个函数。一旦我删除了 queuetrigger 函数,一切都按预期工作。
    • @Jay42,如果这对您有帮助,您可以将其标记为答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2019-08-17
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2021-04-30
    • 2017-04-20
    • 2019-01-23
    相关资源
    最近更新 更多