Azure WebJobs – 我可以使用Async方法吗?

前端之家收集整理的这篇文章主要介绍了Azure WebJobs – 我可以使用Async方法吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道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中尝试使用异步/等待,没有大量的文档,如果可以的话,这将是非常好的.

我试图在本地运行它来测试…但WebJobs SDK不支持本地存储模拟器…

更新4/7/2014:维克多的答案是正确的,但我确实想要展示在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

解决方法

现在支持异步.看到博客文章 here.

不幸的是,两个问题的简短答案是:不支持.

(略)较长答案:

WebJobs SDK不支持异步方法.如果查看执行日志(在仪表板上),您将看到一条警告,指出异步函数(返回任务或任务)的函数是同步执行的.

我们不支持本地模拟器.开发时必须使用真正的存储帐户.

猜你在找的HTML相关文章