当前位置: 首页 > 知识库问答 >
问题:

Microsoft AZURE blob触发功能间歇性工作

尹乐邦
2023-03-14

我们遇到了Blob触发函数的问题。该函数是用javascript编写的。我们费了很大的劲才把自动化部署流程落实到位。以下是我们遵循的步骤。

>

  • 使用ARM模板和参数文件在现有资源组中创建函数应用程序New-AzureRmResourceGroup部署-ResourceGroupName$resourceGroupName-TemplateFile$templateFilePath-TemplateParameterFile$armParametersFilePath;

    通过<code>Kudu<code>api<code>调用RestMethod-Uri“$apiUrl”-方法Put-InFile“$functionCodeArchivePath”-凭证$credentials-DisableKeepAlive-用户代理“powershell/1.0”-TimeoutSec 600部署函数代码

    通过kudu api运行<code>npm install

    在最后一步——在Kudu上获取依赖项的命令(< code>npm install)超时,这似乎是一个已知的问题。

    为了克服这个问题,我们采用了以下方法,使用WebPack将所有依赖项打包到一个JavaScript文件中。

    现在部署速度更快,但该函数似乎没有正确执行。

    当我们将文件拖放到 Blob 存储帐户中时,将从 触发函数,该函数似乎并不总是记录执行跟踪。有些运行具有完整的日志,有些运行仅在其中启动了 Function,而没有任何自定义日志语句。

    这是日志,直接来自Kudu(D:\home\LogFiles\Application\Functions\Function\Functionname

    2017-03-03T11:24:33.835 Function started (Id=77b5b022-eee0-45e0-8e14-15e89de59835)
    2017-03-03T11:24:35.167 JavaScript blob trigger function started with blob:
    2017-03-03T11:24:35.167 Name: _1486988111937 
     Blob Size: 8926 Bytes
    2017-03-03T11:24:35.167 Extracting file
    2017-03-03T11:24:35.167 JavaScript blob trigger function processed blob 
     Name: _1486988111937 
     Blob Size: 8926 Bytes
    2017-03-03T11:24:35.183 Function completed (Success, Id=77b5b022-eee0-45e0-8e14-15e89de59835)
    2017-03-03T11:24:35.292 { Error: [** SENSITIVE ERROR MESSAGE, INTERNAL TO FUNCTION, REMOVED **] }
    2017-03-03T11:28:34.929 Function started (Id=8bd96186-50bc-43b0-916c-fefe4bd0cf51)
    2017-03-03T11:38:18.302 Function started (Id=7967cc93-73cf-4acf-8428-20b0c70bbac9)
    2017-03-03T11:39:32.235 Function started (Id=a0abb823-9497-429d-b477-4f7a9421132e)
    2017-03-03T11:49:25.164 Function started (Id=ab16b1d9-114c-4718-aab2-ffc426cfbc98)
    2017-03-03T11:53:51.172 Function started (Id=87ed29bc-122f-46d2-a658-d933330580c9)
    2017-03-03T11:56:06.512 Function started (Id=23f8ee3f-cda0-45a3-8dd0-4babe9e45e4e)
    2017-03-03T12:02:58.886 Function started (Id=c7ef7ad5-62b8-4b43-a043-bc394d9b02f5)
    

    PS:我们的函数代码是获取 blob,一个压缩文件,解压缩它,并对压缩文件夹中的每个文件进行 API 调用。日志中标有 [** 敏感错误消息,函数内部,已删除 **] 的错误与连接到我们的 API 有关。

  • 共有1个答案

    闻人望
    2023-03-14

    看起来Blob触发并不那么可靠,至少根据本页:如何将Azure blob存储与WebJobs SDK一起使用

    WebJobs SDK扫描日志文件以监视新的或已更改的blobs。这个过程不是实时的;在blob创建后的几分钟或更长时间内,函数可能不会被触发。此外,存储日志是在“尽力而为”的基础上创建的;不能保证所有事件都会被捕获。在某些情况下,日志可能会丢失。如果您的应用程序无法接受blob触发器的速度和可靠性限制,推荐的方法是在创建blob时创建队列消息,并在处理blob的函数上使用QueueTrigger属性,而不是BlobTrigger属性。

    您可能应该更改逻辑,并为放入Blob存储中的每个文件创建一个队列消息

     类似资料:
    • 问题内容: 我们的数据库中有一个函数,该函数搜索两个大表以查看是否存在值。这是一个相当大的查询,但已对其进行了优化以使用索引,并且通常运行速度非常快。 在过去的2周中,此功能有3次决定进入麻烦境地,并且运行极其缓慢,这会导致死锁和性能下降。即使在少于高峰使用时间的情况下,也会发生这种情况。 在SQL Server中使用“更改功能”重建功能似乎可以解决此问题。完成后,服务器使用率将恢复正常,一切正常

    • 我们在ignite中面临着间歇性的性能问题,响应时间变得非常高,我们在日志中看到了下面的错误。我们有10个索引列,我没有看到索引有任何问题,因为“where”子句中的所有列都被索引了。联接发生在具有亲和性共定位的字段上,这意味着联接只发生在特定节点中的数据上,而不发生在Across ;节点上。 请让我知道你是否能在这方面提供任何帮助。  > Apache Ignite版本:2.7.5 启用Igni

    • 嗨,我得到功能键和触发器Url作为输出在我们的Arm模板,使用以下代码。 我们在应用程序设置中将'AzureWebJobsSecretStorageType'设置为'Files',因为在Functions v2中没有它就不能工作,当我们执行ARM模板时,它有时会工作,但有时会引发以下错误,不确定这是什么问题,ARM模板有效,因为它确实工作,我可以看到该函数也成功地部署在Azure门户中,所以不确定

    • 问题内容: 我有一个通过Apache https proxypass在Tomcat上运行的Java Spring Web应用程序,当它尝试访问安全的IBM Watson服务时间歇性地失败。Apache通过LetsEncrypt证书进行安全保护,该证书重定向到Tomcat端口8080。 环境: Java:jdk1.7.0_80 Solaris 10 Tomcat 8.0.33 Apache2.4.1

    • 我已经编写了一个程序,从usb摄像头捕获图像,并根据检测到的每帧颜色跟踪对象的位置。间歇性(可能在1分钟、10分钟或半小时后发生)我收到错误消息: 我遵循的流程是: 用相机拍摄一帧,cap=cv2。视频捕获(1)/cap。read() 变换几何,cv2。透视图 高斯模糊滤波器,cv2。高斯模糊 BGR到HSV转换,cv2。CVT彩色(模糊帧,cv2.COLOR\u BGR2HSV) 轮廓发现和分析

    • 我们有一个SSL问题,我是99%,这不是你通常的证书信任商店旋转木马。 我们有一个Weblogic服务器试图通过LDAPS与Active Directory建立SSL连接,底层SSL实现是JSSE。 有时,它是有效的。通常在重新启动Weblogic后的几个小时内。 之后,我们开始得到SSL握手错误,与SSL调试打开我们看到: [ACTIVE]ExecuteThread:'10'用于队列:'webl