[英]Make a ASP.NET MVC method do work in a background queue
主要问题:我想在后台执行一段代码。 请进一步阅读以了解我所说的“背景”是什么意思。
我正在尝试通过异步/非阻塞线程执行外部数据发布。 主要思想是提交表单的用户不需要等待外部请求完成。
目前的流程是这样的:
我正在尝试将UploadFilesToAmazonAWSAndDropBoxAndFlickrAndGoogleDrive
与常规用户流程分离,就像在当前设置中一样,用户正在等待外部 API 完成。 如何让UploadFilesToAmazonAWSAndDropBoxAndFlickrAndGoogleDrive
在后台线程中运行?
编辑:发布我正在尝试修复的代码的粗略轮廓
[HttpPost]
public ActionResult Index(FormCollection fc)
{
//database operations,
InsertIntoDatabase(fc); //takes 1 second
//3rd party posting
//Takes about 30 seconds.
//Why it takes 30 seconds is obvious. Please let me know if this isn't obvious.
UploadFilesToAmazonAWSAndDropBoxAndFlickrAndGoogleDrive(fc);
//email operations
SendEmails(fc); //takes 1 second
//User is taken to Thank you page after 32 seconds. I want to reduce the time to 2 seconds
return View("ThankYou");
}
根据您编辑的场景和目标,以下高级选项可能会帮助您实现目标。
PostDataToExternalResources
方法启动后台线程,但您仍然需要管理任何异常等。 此外,如果您这样做,我不会将表单集合传递给该方法,请记住,您无法保证结果由于查看“谢谢”页面似乎不依赖于任务的完成,我会查看像 HangFire 这样持久/可执行的东西,以保持一致性和易于管理
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.