问题标签 [azure-webjobs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3979 浏览

azure - 在 azure 上发布网站时,webjobs 被删除

当我在创建多个 webjobs 的现有站点上发布站点时,这会删除服务器上的所有文件,并且所有 web 作业都会被删除。

我认为这是因为 webjobs 存储在 App_Data 文件夹中。删除 APP_Data 目录时,作业也将被删除。

发布时如何避免删除 app_data 文件夹?

0 投票
1 回答
8868 浏览

c# - 计划的 Azure WebJob 但未调用 NoAutomaticTrigger-Method

这个问题与这个问题有关:Running Azure WebJob without queue

我的场景:我只想每小时将一个文件写入 blob 存储,不需要任何队列系统。从前一个问题中,我得到了这段代码——它在第一次被触发时运行良好:

该网站以“AlwaysOn=true”运行,网络作业一直在“运行”,但现在调度程序抛出以下错误 - 没有任何反应:“由于作业已经在运行,因此无法开始新的运行。”

当前的结果是文件只被写入一次。如果我将“AlwaysOn”切换为 false,它“工作”,但它看起来很脏,因为没有 Always on the job 结果是“Aborted”。

0 投票
3 回答
4344 浏览

azure-webjobs - 如何防止 Azure WebJob 在发布后启动?

我们有一个带有“暂存”部署槽的 Azure 网站设置,并且我们使用连续的 Azure WebJob 来处理长时间运行的后台作业。看来,当您发布到网站(并包含 WebJob 二进制文件)时,如果 WebJob 之前停止,它将重新启动它自己。

我们当前的部署过程如下所示:

  1. 部署到 STAGING
  2. 立即快速停止 STAGING 上的 WebJob(尝试阻止 2 个 WebJobs 处理消息)
  3. 冒烟测试和验证 STAGING 作品的代码
  4. 停止 PRODUCTION WebJob(让它排出队列消息)
  5. 在 PRODUCTION 和 STAGING 之间切换
  6. 启动 PRODUCTION WebJob(这只是 STAGING WebJob)

是否有技巧(比如标志文件或其他东西)告诉 WebJob 在发布后不要启动?

0 投票
1 回答
2030 浏览

json - 如何解决 Azure WebJob SDK 中的依赖冲突?

我正在试用 Azure WebJob SDK (v 0.3.1)。我已将所有内容打包并上传,但在仪表板中出现错误:

“未处理的异常:System.IO.FileLoadException:无法加载文件或程序集'Newtonsoft.Json,版本 = 4.5.0.0,文化 = 中性,PublicKeyToken = 30ad4fe6b2a6aeed'或其依赖项之一。定位的程序集的清单定义与程序集参考。(来自 HRESULT 的异常:0x80131040)“

我理解这意味着Newtonsoft.Json应用程序中引用的版本比 WebJob SDK 中引用的更新版本。但是,我尝试将依赖项绑定重定向添加到app.config与 exe 关联的关联,但这不会改变错误。我怀疑配置根本没有被使用。job.blah.exe.config我在and中都有以下直接绑定web.config

Newtonsoft.Json 在两个项目中都是 v6.0.0.0。

解决此问题的最佳方法是什么?

0 投票
1 回答
5630 浏览

azure - Azure Webjobs - 使用参数调用方法并调用绑定

我在 web Jobs sdk 上玩得更多,我只需要通过调度程序调用一个方法,它应该将 1-n 个文件写入存储。WebJobs SDK 的优点是我不需要包含 Azure 存储 SDK,并且所有内容都是“绑定的”。当我指定文件名时它可以工作,但我的“WriteCustomFile”方法只写入一个名为“{name}”的文件

代码:

我想要实现的只是用给定的文件名调用“WriteCustomFile”。我发现的所有示例都考虑到了“Blob 输入/输出”的想法。我找到了这个示例,但它似乎更像是一个 hack ;) http://thenextdoorgeek.com/post/WAWS-WebJob-to-upload-FREB-files-to-Azure-Storage-using-the-WebJobs-SDK

目前有没有办法做到这一点?

0 投票
2 回答
456 浏览

azure - 从 WebJob 中停止网站

有没有办法从 WebJob 中停止 Azure 网站?

我有一个使用 Ghost 在 Node 上运行的 Azure 网站。我正在尝试安排 Ghost 数据库文件的备份,理想情况下应该在站点未运行时完成。我可以通过使用 Kudu PowerShell 控制台终止 Node.exe 进程来暂时停止该站点。

如果我尝试从 WebJob 执行相同的操作,则该进程不会终止 - 大概是因为 WebJob 在不同的上下文中运行并且看不到 node.exe 进程。

有没有办法从 WebJob 中停止/启动站点?

0 投票
2 回答
3196 浏览

azure - Azure Web 作业功能状态为“从未完成”

我在 azure 中创建了一个网络作业。Web 作业是一种连续运行。当队列中有消息时调用的 Web 作业函数。我可以通过 Azure 存储资源管理器或 mvc Web 应用程序在队列中添加消息来调用 Web 作业功能。

Web 作业是一个控制台应用程序,通过在本地使用命令行运行来执行一项工作大约需要一个小时。调用 Web 作业后,它成功启动,但过了一段时间(大约 5-10 分钟),我在 Web 作业日志中发现功能 Invoke status 为“Never Finished”。

所以我的问题如下: -

1)这个问题是由于长时间运行的任务造成的吗?

2)这个问题是由于处理过程中的任何错误造成的吗?(但我可以在本地运行它)

3)如果我从网络作业添加的数据库中删除记录,那么我发现网络再次启动。为什么?

4)如果我需要在处理完成后从队列中删除消息?

这是我从网络作业调用的代码片段

}

编辑:-

我在天蓝色中遇到以下错误..

[07/10/2014 15:50:52 > 32a9e0: ERR ] 未处理的异常:Microsoft.WindowsAzure.Storage.StorageException:远程服务器返回错误:(404) 未找到。---> System.Net.WebException:远程服务器返回错误:(404)未找到。

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Net.HttpWebRequest.GetResponse()

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd,IRetryPolicy 策略,OperationContext operationContext)

[07/10/2014 15:50:52 > 32a9e0: ERR ] --- 内部异常堆栈跟踪结束 ---

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](RESTCommand`1 cmd,IRetryPolicy 策略,OperationContext operationContext)

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 Microsoft.WindowsAzure.Storage.Queue.CloudQueue.UpdateMessage(CloudQueueMessage 消息,TimeSpan visibilityTimeout,MessageUpdateFields updateFields,QueueRequestOptions 选项,OperationContext operationContext)

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 Microsoft.Azure.Jobs.UpdateQueueMessageVisibilityCommand.TryExecute()

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 Microsoft.Azure.Jobs.LinearSpeedupTimerCommand.Execute()

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 Microsoft.Azure.Jobs.IntervalSeparationTimer.RunTimer(对象状态)

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.TimerQueueTimer.CallCallbackInContext(对象状态)

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback 回调,对象状态,布尔值 preserveSyncCtx)

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback 回调,对象状态,布尔值 preserveSyncCtx)

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.TimerQueueTimer.CallCallback()

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.TimerQueueTimer.Fire()

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.TimerQueue.FireNextTimers()

[07/10/2014 15:50:52 > 32a9e0: ERR ] 在 System.Threading.TimerQueue.AppDomainTimerCallback()

[07/10/2014 15:50:52 > 32a9e0: 信息] .................... ..................................................... ..................................................... ................ [07/10/2014 15:50:52 > 32a9e0: SYS ERR] 由于退出代码 -532462766,作业失败

[07/10/2014 15:50:52 > 32a9e0: SYS INFO] 进程关闭,等待 0 秒

[07/10/2014 15:50:52 > 32a9e0: SYS INFO] 状态更改为 PendingRestart

[07/10/2014 15:50:57 > 32a9e0: SYS INFO] 使用脚本主机 - 'WindowsScriptHost' 运行脚本'Scheduler.exe'

[07/10/2014 15:50:57 > 32a9e0: SYS INFO] 状态更改为正在运行

因此,查看错误,我尝试在本地从控制台应用程序执行相同的功能及其工作。多次运行后,我发现该功能正在执行 5 分钟。因此,如果有任何时间限制在 Web 作业中运行任何功能。

谢谢。

0 投票
1 回答
1200 浏览

azure - Azure Web 作业中的 Signalr 自托管集线器需要提升吗?

我想在连续的 Azure Web 作业中使用 SignalR 自托管项目。但是当我尝试运行它时,我收到以下错误:

我想控制台应用程序需要以提升的权限运行。有什么办法可以让它工作吗?

先决条件

完整来源:

0 投票
2 回答
1706 浏览

azure-webjobs - 在 Azure WebJobs 0.3 Beta 中多次触发 BlobTrigger 作业

升级到 WebJobs 0.3 beta 后,Azure WebJobs 在将 Blob 发布到存储时多次调用我的方法(使用 BlobTrigger 作为输入)。在控制台和 Azure 中进行本地测试时都会发生这种情况。就我而言,我使用 BlobTrigger,然后发布到队列中,如下所示:

队列收到两条消息,在 webjobs azure 仪表板中,它确实显示了被调用两次的函数。

为什么是这样?

0 投票
1 回答
1075 浏览

azure - 在 Azure 中,为什么同一个 WebJob 在多个网站上运行时不能从单个存储帐户扩展?

我目前正在尝试将处理器密集型模拟任务划分为数百个块,这些块在 Azure 中并行处理。我认为 Azure 网站提供了易于设置的专用虚拟机和 WebJobs 以及易于使用的存储队列抽象,非常符合我的要求。

我有以下 Azure 设置,每次运行时都会由我的代码全新创建

  • 单个存储帐户
  • 一个带有作业描述的存储队列
  • 带有静态数据的存储容器
  • 结果的存储容器(每个作业的唯一文件)
  • n(例如 8 个)“标准”网站,表示有 n 个不同的 *.azurewebsites.net URI
  • 使用 WebJobs SDK (JobHost) 在每个网站上连续运行一个 WebJob(示例中为 8 个 WebJobs)
  • 每个职位描述<1k
  • 每个作业包含大约 100k 的 Blob-input-data
  • 每个结果大约是 100k 的 Blob-output-data
  • 在当前的缩放下,每个作业运行大约一分半钟

这是工作的签名。

然后代码继续设置网站本地的、特定于作业的目录,提取包含可执行文件的 zip 存档,使用 Process.Start 运行此可执行文件并将捕获的输出写入 blob。进程访问的所有内容都在机器上可用。调试 TextWriter 用于捕获作业中的计时信息。

我期望看到的是,每个网站都会从队列中获取一个作业,运行它,将结果发布到容器中并执行下一个作业。

我实际看到的是,实际上只有一个 WebSite 正在运行作业,而其余的只是空闲,尽管 WebJob 被报告为在每个站点上启动并运行。最终结果是每分钟完成的作业数量与一个网站相同。这是一个运行日志,其中两个网站“决定”参与运行作业:simulation-log.zip。连接字符串中提到的存储帐户已被删除,因此我没有从日志中删除访问密钥。

我已经为 WebJob 添加了一些计时工具,从中我可以看到有时运行可执行文件需要两倍或三倍(几乎完全准确)的时间,它会在“正常”运行中花费

秒表显示的时间为 1:15、2:27、3:43 等。但一些耗时比预期更长的作业也会显示秒表的预期时间。但是,在这两种情况下,都会运行另一个网站上的作业,并且会在存储的结果容器中显示结果。最后,每分钟完成的作业数量不会改变。

更新

今天,我更进一步,为每个网站创建了一个单独的存储帐户,并在 8 个存储帐户中的 8 个队列之间手动分配作业,每个队列用于 8 个网站之一。这意味着从我的外部角度来看,除了偶然运行相同的代码之外,没有任何共同点。

这没有帮助

看起来我仍然只有一个处理器,它必须在我创建的任何网站上运行所有 WebJobs,无论它们多么独立。我创建了 CPU 时间的图像,如门户所示: 门户中显示的 CPU 时间