Azure:同步卸载内存密集型任务?

时间:2014-06-03 17:00:53

标签: azure azure-queues azure-webjobs

我正在设计一个将在Azure中托管的ASP.NET Web应用程序。我计划调整用户在服务器端上传的图像的大小。我有一个可以执行此操作的库,但目前这种情况发生在主Web前端VM中。我想将其卸载到工作虚拟机。我理解使用队列执行此操作的模式,但我不想在任务完成之前返回给用户,因为我计划在完成处理的请求后显示已调整大小的图像。那么,如何卸载将同步执行的任务? (这意味着在远程任务完成之前我不会从通话站点返回。)

...谢谢

-Ben

2 个答案:

答案 0 :(得分:2)

在Web服务器上保留线程通常不是一个好主意;这会对可扩展性产生负面影响。

考虑使用UI JQuery定期检查图像是否准备好显示。您所要做的就是每隔一秒左右检查图像是否存在。有几种方法可以做到这一点;在一个实现中,客户端提前知道图像的名称并且只是尝试读取它(例如Blob);在另一个UI中,UI不知道名称,但检查Azure表中的记录,该记录指示图像创建的状态。

答案 1 :(得分:2)

您可以在此处执行类似于我们在WebJobs示例中执行的操作:http://aspnet.codeplex.com/SourceControl/latest#Samples/AzureWebJobs/PhluffyShuffy/PhluffyShuffyWeb/Views/Shuffle/Index.cshtml

我们有一个非常相似的应用程序:处理图像并在完成后显示它。为此,我们只是使用JavaScript汇集结果blob。