- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将 python azure 函数作为 zip 包部署到 Linux 函数应用程序。
如果我的代码包含 azure-eventhub
包的导入,则该函数在部署后不会运行,即使 azure-eventhub
包包含在 需求中.txt
.
但它确实在本地运行,没有任何问题。
如果删除导入,它也可以在函数应用程序中正常运行。
创建包含以下文件的 zip 文件 function_app.zip
:function_app.py
:
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="source")
@app.schedule(
arg_name="timer",
schedule="*/10 * * * * *",
run_on_startup=True,
use_monitor=False
)
def source(timer: func.TimerRequest) -> None:
logging.info("Source executed!")
requirements.txt
:
azure-functions
azure-eventhub
host.json
:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
}
},
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.15.0, 4.0.0)"
}
}
从 Azure CLI 创建 Azure 函数应用:
$prefix = "yourprefix"
az login
az group create --name "$prefix-rg" --location "East US"
az storage account create --name "${prefix}storage" --location "East US" --resource-group "$prefix-rg" --sku "Standard_LRS"
az functionapp create --name "$prefix-function-app" --storage-account "${prefix}storage" --consumption-plan-location "eastus" --resource-group "$prefix-rg" --functions-version 4 --os-type "Linux" --runtime "python"
将 zip 文件部署到函数应用:
az functionapp deployment source config-zip -g "$prefix-rg" -n "$prefix-function-app" --src .\function_app.zip
代码现在已部署到函数应用程序,并且 source
函数每十秒执行一次,您可以通过查看日志流来确认这一点。但是,当您添加
from azure.eventhub import EventData
from azure.eventhub.aio import EventHubProducerClient
导入到 zip 文件中的 function_app.py
文件并使用以下命令重新部署该函数
az functionapp deployment source config-zip -g "$prefix-rg" -n "$prefix-function-app" --src .\function_app.zip
,就不会再执行了。
(运行 az group delete --name "$prefix-rg"
来清理资源。)
部署后函数应用的日志流:
Connected!
2023-03-23T13:31:59Z [Information] Loading functions metadata
2023-03-23T13:31:59Z [Information] Reading functions metadata
2023-03-23T13:31:59Z [Information] 1 functions found
2023-03-23T13:31:59Z [Information] 0 functions loaded
2023-03-23T13:31:59Z [Information] Loading functions metadata
2023-03-23T13:31:59Z [Information] Reading functions metadata
2023-03-23T13:31:59Z [Information] 1 functions found
2023-03-23T13:31:59Z [Information] 0 functions loaded
2023-03-23T13:33:52Z [Information] Host lock lease acquired by instance ID '00000000000000000000000009A7A025'.
2023-03-23T13:35:46Z [Information] Host lock lease acquired by instance ID '00000000000000000000000060EAB21B'.
2023-03-23T13:46:14Z [Verbose] Received request to drain the host
2023-03-23T13:46:14Z [Information] DrainMode mode enabled
2023-03-23T13:46:14Z [Information] Calling StopAsync on the registered listeners
2023-03-23T13:46:14Z [Information] Call to StopAsync complete, registered listeners are now stopped
如果您想确认该函数是否通过导入在本地运行,请按照以下步骤操作:
运行
python -m venv .venv
.venv\scripts\activate
pip install -r requirements.txt
然后运行:
func init
启动azurite存储模拟器在单独的进程中。
您可以使用 npm install -g azurite
安装 azurite。运行蓝铜矿
azurite
您现在可以运行该函数。
运行:
func start
即使有导入,它也会每十秒运行一次。
最佳答案
根据 MSDoc ,v2 编程模型当前不支持多个 Python 工作线程设置。使用 v2 模型开发的函数不支持通过将 FUNCTIONS WORKER PROCESS COUNT
设置为大于 (>1) 1 来启用智能并发。
我建议您尝试在 host.json
文件中将 FUNCTIONS_WORKER_PROCESS_COUNT
设置为 1。
如果问题仍然存在,请在单独的模块中使用 event-hub
包,并将其导入到函数中,如上述文档中详述。
注意:并卸载 event-hub 软件包并使用最新版本 (5.11.2) 重新安装。
pip install azure-eventhub
检查完上述内容后,我在我的环境中尝试了与您相同的要求,并成功部署和执行。
init.py:
import logging
import azure.functions as func
from azure.eventhub import EventData
from azure.eventhub.aio import EventHubProducerClient
app = func.FunctionApp()
@app.function_name(name="")
@app.schedule(
arg_name="",
schedule="*/5 * * * * *",
run_on_startup=True,
use_monitor=False
)
def source(timer: func.TimerRequest) -> None:
logging.info("")
更新的代码:
host.json
:
{ "version": "2.0",
"extensions": {
"eventhubs": {
}
},
"FUNCTIONS_WORKER_PROCESS_COUNT": <number_of_worker_processes>
}
关于python - azure-eventhub 导入破坏了 Azure 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75823906/
我正尝试按照教程实现接收器部分 https://azure.microsoft.com/en-us/documentation/articles/event-hubs-java-ephjava-get
我想发送给eventhub客户,然后将其下载到示例数据(例如天气)并发送另一个eventhub。我的代码无法正常工作。没有错误,但数据没有发送到数据库。 public Task ProcessEven
在我的应用程序中,发布到 Eventhub 的各种事件。但是我的消费者群体只需要特定的一组事件。如何在 Eventhub 中过滤这个? 最佳答案 关注此 post : event hubs doesn
比方说,当处理来自 Azure EventHub 的批量事件时发生 transient 故障并且 transient 故障即使在重试后仍然持续,那么可以从处理器向 Eventhub 抛出哪种异常?以便
没有现成的解决方案可以将数据从一个 Azure EventHub 克隆到另一个 EventHub。有哪些可能的选择来实现这一目标? 最佳答案 复制 Azure EventHub 流的一个简单选项是在
Azure 事件中心发布了一个现代客户端库 (Azure.Messaging.EventHubs),用于读取和写入事件中心。新库应该取代旧库 (Microsoft.Azure.EventHubs),所
我的要求是使用 Spring 的 Azure 事件中心进行简单的发布-订阅。 在检查文档后,我发现了 2 篇文章演示了集成。 One uses azure-eventhubs图书馆和the other
我的要求是使用 Spring 的 Azure 事件中心进行简单的发布-订阅。 在检查文档后,我发现了 2 篇文章演示了集成。 One uses azure-eventhubs图书馆和the other
我需要获取 EventHub 的分区列表。我正在尝试使用最新 SDK 中的 EventProcessorClient。这似乎没有 getRuntimeInformation 方法。 有什么方法可以使用
作为安全产品的一部分,我拥有大规模云服务(azure 辅助角色),它从事件中心读取事件,将它们批量处理到约 2000 个,然后存储在 blob 存储中。每个事件都有一个 MachineId(发送该事件
升级 然后构建 返回 “命名空间“Microsoft.Azure”中不存在类型或命名空间名称“EventHubs”(是否缺少程序集引用?)[sss-af-filter]” “找不到类型或命名空间名称“
使用 Event Hub Premium 时我们必须计算的 Azure Event Hub 吞吐量限制是多少? The documentation说使用高级层时每个 PU 没有限制,但我不明白这意味着
实际上是在尝试做一些我不擅长的事情。 我在这里阅读了持久功能概述 - https://learn.microsoft.com/en-us/azure/azure-functions/durable/d
我在 java 中运行事件中心函数的发送者类应用程序。 下面是输出: [main] INFO com.azure.messaging.eventhubs.EventHubClientBuild
全部, 我设置了 EventHub 命名空间和 EventHub,并能够使用 Python 脚本成功向其发送和接收事件。我还能够启用捕获功能并将事件以 Avro 格式存储在 Azure Blob 存储
为什么我们需要 Azure 存储帐户上的 blob 容器用于 Eventhub 消费者客户端(我使用的是 python)。为什么我们不能像在 Kafka 中那样直接使用来自 Eventhub(Kafk
全部, 我设置了 EventHub 命名空间和 EventHub,并能够使用 Python 脚本成功向其发送和接收事件。我还能够启用捕获功能并将事件以 Avro 格式存储在 Azure Blob 存储
我们正在开发一个 Multi-Tenancy 应用程序,其中 eventhub 将在不同租户之间共享。我们将在租户之间分配分区。每个租户将在不同的分区上发送消息。我们希望在分区级别对租户进行身份验证。
据我了解,eventhub 每秒可以处理/摄取数百万条消息。为了调整摄取,我们可以使用吞吐量。 更高的吞吐量=更强的摄取能力。 但是在接收/消费方面,您最多可以创建 32 个接收者(因为我们可以创建
为什么我们需要 Azure 存储帐户上的 blob 容器用于 Eventhub 消费者客户端(我使用的是 python)。为什么我们不能像在 Kafka 中那样直接使用来自 Eventhub(Kafk
我是一名优秀的程序员,十分优秀!