gpt4 book ai didi

Azure WebJob .bat 文件立即终止

转载 作者:行者123 更新时间:2023-12-02 07:50:10 30 4
gpt4 key购买 nike

我有一个连续的 WebJob,它由使用 WebJobs SDK 编译的可执行文件组成(换句话说,在 Main() 中运行 host.RunAndBlock()),并且Functions 类中有一个名为 ProcessQueueMessage() 的简单方法。它完全是样板文件。

问题是我需要在包中包含一个附加的可执行文件,并且其文件名按字母顺序位于主可执行文件之前。我将编译为 WebJob1.exe,但我需要在同一部署目录中拥有名为 MyOtherExecutable.exe 的内容。根据WebJobs documentation ,这意味着 MyOtherExecutable.exe 成为 WebJob 的主要可执行文件; 它将被调用,而不是 WebJob1.exe。

我意识到有记录的方法可以解决这个问题。我可以手动更改文件名并强制我的 WebJob 编译为类似 111.exe 的名称,但这似乎是一个糟糕的黑客行为。另一种方法是包含一个包含一行的 .bat 文件,我将其解释为首选且更优雅的方法:start WebJob1.exe。不幸的是,当我这样做时,WebJob 会立即启动并永远停止,如您所见:

[12/14/2015 07:05:55 > fed86c: SYS INFO] Run script 'run.bat' with script host - 'WindowsScriptHost'
[12/14/2015 07:05:55 > fed86c: SYS INFO] Status changed to Running
[12/14/2015 07:05:55 > fed86c: INFO] D:\local\Temp\jobs\continuous\WebJob1\irfufwim.i5t>start WebJob1.exe
[12/14/2015 07:06:06 > fed86c: SYS INFO] Status changed to Success
[12/14/2015 07:06:07 > fed86c: SYS INFO] Process went down, waiting for 60 seconds
[12/14/2015 07:06:07 > fed86c: SYS INFO] Status changed to PendingRestart
(repeat)

这不是我所期望的行为。我认为 .bat 文件将运行我的可执行文件(永远不会从内部终止)并保持打开状态,直到我手动结束它。

它也没有为 WebJob 提供这个非常好的插件,就像我在对消息进行排队并从 WebJob 的部署目录中删除所有分散注意力的可执行文件/脚本时看到的那样:

[12/14/2015 07:18:22 > fed86c: SYS INFO] Status changed to Starting
[12/14/2015 07:18:25 > fed86c: SYS INFO] Run script 'WebJob1.exe' with script host - 'WindowsScriptHost'
[12/14/2015 07:18:25 > fed86c: SYS INFO] Status changed to Running
[12/14/2015 07:18:26 > fed86c: INFO] Found the following functions:
[12/14/2015 07:18:26 > fed86c: INFO] WebJob1.Functions.ProcessQueueMessage
[12/14/2015 07:18:26 > fed86c: INFO] Job host started

它列出了它找到的函数的部分向我表明一切都在按其应有的方式进行通信。看起来很官方。我担心即使我要让 .bat 文件工作以便我可以清楚地指定我想要运行的可执行文件的名称,服务器也会“停在那里”并且不会在我的函数中进行适当的 Hook ,如果这就说得通了。我不知道托管机制是否足够智能,能够知道它们已从愚蠢的 .bat 文件跳转到真正的可执行文件。

我的主要问题的简短版本:如果 start WebJob1.exe 不是应运行连续 WebJobs SDK 可执行文件的 .bat 文件的正确语法,那么什么是?

最佳答案

删除“start”并直接调用WebJob1.exe。我正在我的一个 WebJobs 中执行此操作,并且它有效,包括为我提供您正在查找的所有控制台日志记录。

一个区别是我使用 run.cmd 而不是 .bat 文件,这是使用脚本文件覆盖 exe 启动行为的推荐方法。然而,这在您的场景中应该没有什么区别 - .bat 文件也可以工作。

关于Azure WebJob .bat 文件立即终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34261800/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com