【发布时间】:2014-05-19 22:14:25
【问题描述】:
我想知道 Azure WebJobs SDK 是否可以触发异步方法?目前我有一个如下所示的方法:
class Program
{
static void Main(string[] args)
{
var host = new JobHost();
host.RunAndBlock();
}
public static void ProcessStuff([QueueInput("myqueue")] string msg)
{
var tsk = ProcessStuffAsync(msg)
.ContinueWith(x => HandleAsyncError(x),
TaskContinuationOptions.OnlyOnFaulted);
tsk.Wait();
}
public static async Task ProcessStuffAsync(string msg)
{
// do some async stuff and await it
}
// other methods ...
}
但是,我想知道是否可以让 JobHost 知道调用我的异步方法?没有大量关于尝试在 WebJobs 中使用 async/await 的文档,如果可以的话,那就太好了。
我正在尝试在本地运行它来测试...但 WebJobs SDK 不支持本地存储模拟器...
2014 年 4 月 7 日更新:维克多的回答是正确的,但我确实想展示在 WebJob 中使用异步方法会看到什么(它们确实有效)。
对于您的 WebJob 中的方法,如下所示:
public async static Task ProcessMessageAsync([QueueInput("testq2")] string message)
{
await Task.Delay(50);
Console.WriteLine("Processing Message Async...");
Console.WriteLine(message);
}
您将在 WebJobs 日志中看到以下输出:
running in pid: 6272
Timestamp:4:36:02 PM
Parameters bound. Invoking user function.
--------
Warning: This asynchronous method will be run synchronously.
Processing Message Async...
a test message
--------
Success
【问题讨论】:
-
你为什么不试试并告诉我们?
-
@StephenCleary 目前正在处理它 - 如果其他人已经成功完成,只是想避免设置所有 azure 存储/网站帐户和配置。
标签: azure azure-web-app-service azure-webjobs azure-webjobssdk