s**********s 发帖数: 16 | 1 耗时的工作一般需要3个小时左右,希望用户提交工作以后,在后台排队,处理完毕之
后,发电子邮件通知用户去取结果文件。
狗了一大通以后,找到了这个开源的结构Hangfire http://hangfire.io/overview.html,基本满足我所有的要求,有限的代码拿来鼓捣了几天,写了一个MVC程序也都工作了。只是现在遇到了一个最最大的麻烦就是,比如某用户打开一个浏览器提交了3个工作,送到后面queue起来,用户于是关掉浏览器等待处理结果。这时候,如果再有另外一个用户也想打开页面提交工作,结果页面就一直是loading...状态,左下角的错误提示是waiting for available socket......要一直等到前面排队的那3个工作都全部完成了,这个页面才能打开,然后第二个用户才能提交他的工作。
我基本就是照着这个例子里的Hangfire.MvcApplication改写的
https://github.com/HangfireIO/Hangfire.Samples
为什么是这样的结果呢?为什么页面好象被什么锁住?要一直等到前面工作都处理完才
能再次被打开呢?或者大家有什么别的好办法可以达到同样的要求吗?谢谢! |
d******e 发帖数: 2265 | 2 python celery
akka
都是干这个活的。
【在 s**********s 的大作中提到】 : 耗时的工作一般需要3个小时左右,希望用户提交工作以后,在后台排队,处理完毕之 : 后,发电子邮件通知用户去取结果文件。 : 狗了一大通以后,找到了这个开源的结构Hangfire http://hangfire.io/overview.html,基本满足我所有的要求,有限的代码拿来鼓捣了几天,写了一个MVC程序也都工作了。只是现在遇到了一个最最大的麻烦就是,比如某用户打开一个浏览器提交了3个工作,送到后面queue起来,用户于是关掉浏览器等待处理结果。这时候,如果再有另外一个用户也想打开页面提交工作,结果页面就一直是loading...状态,左下角的错误提示是waiting for available socket......要一直等到前面排队的那3个工作都全部完成了,这个页面才能打开,然后第二个用户才能提交他的工作。 : 我基本就是照着这个例子里的Hangfire.MvcApplication改写的 : https://github.com/HangfireIO/Hangfire.Samples : 为什么是这样的结果呢?为什么页面好象被什么锁住?要一直等到前面工作都处理完才 : 能再次被打开呢?或者大家有什么别的好办法可以达到同样的要求吗?谢谢!
|
s**********s 发帖数: 16 | 3 终于有回复了!谢谢
之前也看过Celery,可是我不会Python,岁数大了学新技术真的好慢。Hangfire是.NET
版本的Celery,背景又是MVC.NET这个我上手比较快 |
n*****t 发帖数: 22014 | 4 查查 session expiration 之类的设置
【在 s**********s 的大作中提到】 : 耗时的工作一般需要3个小时左右,希望用户提交工作以后,在后台排队,处理完毕之 : 后,发电子邮件通知用户去取结果文件。 : 狗了一大通以后,找到了这个开源的结构Hangfire http://hangfire.io/overview.html,基本满足我所有的要求,有限的代码拿来鼓捣了几天,写了一个MVC程序也都工作了。只是现在遇到了一个最最大的麻烦就是,比如某用户打开一个浏览器提交了3个工作,送到后面queue起来,用户于是关掉浏览器等待处理结果。这时候,如果再有另外一个用户也想打开页面提交工作,结果页面就一直是loading...状态,左下角的错误提示是waiting for available socket......要一直等到前面排队的那3个工作都全部完成了,这个页面才能打开,然后第二个用户才能提交他的工作。 : 我基本就是照着这个例子里的Hangfire.MvcApplication改写的 : https://github.com/HangfireIO/Hangfire.Samples : 为什么是这样的结果呢?为什么页面好象被什么锁住?要一直等到前面工作都处理完才 : 能再次被打开呢?或者大家有什么别的好办法可以达到同样的要求吗?谢谢!
|
d******e 发帖数: 2265 | 5 不懂.net上的。
但是celery你要设一个queue做broker.
web server async call一下就进quque了。离开会返回。
NET
【在 s**********s 的大作中提到】 : 终于有回复了!谢谢 : 之前也看过Celery,可是我不会Python,岁数大了学新技术真的好慢。Hangfire是.NET : 版本的Celery,背景又是MVC.NET这个我上手比较快
|
l*****g 发帖数: 138 | 6 这个要求很简单啊,为啥要用别人的framework? 自己写个多线程的broker 不就行了吗
?如果用java 的话,收到请求,包装成一个runnable 提交给executor。如果需要运算
完马上call back,可以用一个future, 否则的话可以把结果存在数据库里,隔一会poll
一下就行了。当然还有些housekeeping 的工作需要做,比如万一算到一半crash怎么恢
复,但是都很简单。
我用开源软件的原则就是一定要用的广泛的,质量有保障,有问题也容易找到答案。小
众的开源软件真不如自己写。
【在 s**********s 的大作中提到】 : 耗时的工作一般需要3个小时左右,希望用户提交工作以后,在后台排队,处理完毕之 : 后,发电子邮件通知用户去取结果文件。 : 狗了一大通以后,找到了这个开源的结构Hangfire http://hangfire.io/overview.html,基本满足我所有的要求,有限的代码拿来鼓捣了几天,写了一个MVC程序也都工作了。只是现在遇到了一个最最大的麻烦就是,比如某用户打开一个浏览器提交了3个工作,送到后面queue起来,用户于是关掉浏览器等待处理结果。这时候,如果再有另外一个用户也想打开页面提交工作,结果页面就一直是loading...状态,左下角的错误提示是waiting for available socket......要一直等到前面排队的那3个工作都全部完成了,这个页面才能打开,然后第二个用户才能提交他的工作。 : 我基本就是照着这个例子里的Hangfire.MvcApplication改写的 : https://github.com/HangfireIO/Hangfire.Samples : 为什么是这样的结果呢?为什么页面好象被什么锁住?要一直等到前面工作都处理完才 : 能再次被打开呢?或者大家有什么别的好办法可以达到同样的要求吗?谢谢!
|
c*********e 发帖数: 16335 | 7 用node.js也不错啊,async
【在 s**********s 的大作中提到】 : 耗时的工作一般需要3个小时左右,希望用户提交工作以后,在后台排队,处理完毕之 : 后,发电子邮件通知用户去取结果文件。 : 狗了一大通以后,找到了这个开源的结构Hangfire http://hangfire.io/overview.html,基本满足我所有的要求,有限的代码拿来鼓捣了几天,写了一个MVC程序也都工作了。只是现在遇到了一个最最大的麻烦就是,比如某用户打开一个浏览器提交了3个工作,送到后面queue起来,用户于是关掉浏览器等待处理结果。这时候,如果再有另外一个用户也想打开页面提交工作,结果页面就一直是loading...状态,左下角的错误提示是waiting for available socket......要一直等到前面排队的那3个工作都全部完成了,这个页面才能打开,然后第二个用户才能提交他的工作。 : 我基本就是照着这个例子里的Hangfire.MvcApplication改写的 : https://github.com/HangfireIO/Hangfire.Samples : 为什么是这样的结果呢?为什么页面好象被什么锁住?要一直等到前面工作都处理完才 : 能再次被打开呢?或者大家有什么别的好办法可以达到同样的要求吗?谢谢!
|
s**********s 发帖数: 16 | 8 谢谢你的建议,还有楼上好几个实用的建议,可惜我水平太差,大家说的比如node.js
还在学习阶段,短期内不太可能搞通,在有限期限里只能先就着我熟悉的.NET来尽量完
成要求
poll
【在 l*****g 的大作中提到】 : 这个要求很简单啊,为啥要用别人的framework? 自己写个多线程的broker 不就行了吗 : ?如果用java 的话,收到请求,包装成一个runnable 提交给executor。如果需要运算 : 完马上call back,可以用一个future, 否则的话可以把结果存在数据库里,隔一会poll : 一下就行了。当然还有些housekeeping 的工作需要做,比如万一算到一半crash怎么恢 : 复,但是都很简单。 : 我用开源软件的原则就是一定要用的广泛的,质量有保障,有问题也容易找到答案。小 : 众的开源软件真不如自己写。
|
s**********s 发帖数: 16 | 9 谢谢你的建议,还有楼上好几个实用的建议,可惜我水平太差,大家说的比如node.js
还在学习阶段,短期内不太可能搞通,在有限期限里只能先就着我熟悉的.NET来尽量完
成要求
poll
【在 l*****g 的大作中提到】 : 这个要求很简单啊,为啥要用别人的framework? 自己写个多线程的broker 不就行了吗 : ?如果用java 的话,收到请求,包装成一个runnable 提交给executor。如果需要运算 : 完马上call back,可以用一个future, 否则的话可以把结果存在数据库里,隔一会poll : 一下就行了。当然还有些housekeeping 的工作需要做,比如万一算到一半crash怎么恢 : 复,但是都很简单。 : 我用开源软件的原则就是一定要用的广泛的,质量有保障,有问题也容易找到答案。小 : 众的开源软件真不如自己写。
|