【发布时间】:2015-09-10 14:10:19
【问题描述】:
在使用 Azure WebJobs SDK 时,当我在 JobHost 实例上使用 CallAsync() 触发我的函数时,传递到我的函数中的 TextWriter 和 CancellationToken 实例会在一秒钟内被处理掉,这使得它对于日志记录和监控取消状态。
为了调试,我将代码作为控制台应用程序运行。 Main() 中的代码如下所示:
_host = new JobHost();
_host.StartAsync().Wait();
_host.CallAsync(typeof(Functions).GetMethod("ProcessAggregationsAsync"));
Console.ReadKey();
这是函数(没有逻辑):
[NoAutomaticTrigger]
public static async void ProcessAggregationsAsync([Table("table1")] CloudTable tbl, TextWriter log, CancellationToken cancelToken)
{
log.WriteLine("Hello");
...
log.WriteLine("Hello 2"); // --> log is disposed
}
在函数ProcessAggregationsAsync() 中有一个无限循环,它执行一些逻辑(监控天蓝色表并处理一些数据)并且工作正常。当我添加代码以检查取消令牌或将某些特征记录到提供的日志(TextWriter)中时,问题就开始了。不是立即,它会将 2 个条目写入日志(azure 表“azure-webjobs-hosts”),但随后失败。
可能出了什么问题?为什么这些对象会被丢弃?
【问题讨论】:
标签: azure-webjobssdk