标签: job-queue

ASP.NET MVC的排队解决方案

我研究了为Web应用程序排队的概念(即将某些类型的作业放入队列中以供单独的工作人员完成,而不是在Web请求周期中完成).

我想知道是否有任何好的解决方案可以在ASP.NET MVC环境中使用.

有没有人有任何(好的或坏的)经历?

谢谢!

更新:

只是为了澄清,我不是在谈论排队传入的请求.我会试着说明我的意思......

1)标准情况:

  • 从浏览器请求
  • 服务器处理开始
  • 长期工作开始
  • 长期工作完成
  • 服务器处理完成
  • 响应返回给浏览器

2)我正在研究的内容:

  • 从浏览器中获取
  • 服务器处理开始
  • 长期工作排在队列中
  • 服务器处理完成
  • 响应返回给浏览器

在另一个过程中(可能在发送响应之后):

  • 从队列中取出长期工作
  • 长期工作开始
  • 长期工作完成

在第一个实例中,用户已经等待了很长时间来进行服务器重新计算,在第二个实例中它很快.

当然,某些类型的工作适合于此,有些则不适合.

UPDATE2:

客户端不必立即使用长作业的结果进行更新.只要用户碰巧刷新页面(当然,在作业完成之后),这些更改就会在应用程序中显示出来.

想想堆栈溢出中发生的一些事情 - 它们不会立即在应用程序的每个部分更新,但这种情况很快发生 - 我怀疑其中一些工作正在排队.

asp.net asp.net-mvc job-queue

7
推荐指数
1
解决办法
1816
查看次数

我应该如何使用作业队列[和Perl/Catalyst]来最好地构建我的Web应用程序?

我正在使用Catalyst框架编写Web应用程序.我还使用了一个名为TheSchwartz的作业队列.

我想要使​​用作业队列,因为我希望尽可能多的特定于应用程序的代码与Web应用程序接口代码分离.

基本上整个系统由三个主要部分组成:

  • GUI(Catalyst Web界面)
  • 一个爬虫
  • "攻击组件"(正在编写应用程序以查找其他Web应用程序/站点中的XSS和SQLi漏洞)

因此理论上,GUI为爬虫创建作业,从而为"攻击组件"创建作业.

目前我在Catalyst中有一个Model,它实例化一个TheSchwartz对象,以便Web应用程序中的控制器可以将作业添加到作业队列中.

我还需要创建一些工作者脚本来持续监听(/检查数据库)新的作业,以便他们可以执行所需的操作.目前TheSchwartz的数据库特定内容是在Catalyst中的模型中,我认为我不能轻易访问Catalyst之外的内容?

我不想在模型中复制TheSchwartz作业队列的数据库连接数据,然后在我的作业工作者脚本中复制数据库连接数据.我应该在位于Catalyst外部的另一个类中包装TheSchwartz对象的创建,并在当前实例化TheSchwartz对象的模型中调用它吗?然后我也可以在工作脚本中使用它.或者我应该在配置文件中包含数据库数据并在需要时实例化新的TheSchwartz对象(在Catalyst /内部作业工作者脚本中)?

或者我只是在想这个?

一些内容丰富的Web应用程序架构文章的链接也可能很有用(我之前从未构建过一种复杂的复杂性).

干杯

architecture perl web-applications catalyst job-queue

7
推荐指数
1
解决办法
1172
查看次数

指令后堆栈大小变为负数

有人指出,我遇到这个问题的原因是由于程序4.9,所以我继续更新到proguard-5.2.1.但我仍然遇到同样的问题.有没有人找到解决方案?我通过确认了新版本

 java -jar /projects/tools/android-sdk-macosx/tools/proguard/lib/proguard.jar
Run Code Online (Sandbox Code Playgroud)

proguard-rule.pro很简单

#---- Google Cloud Endpoint section
# Needed by google-api-client to keep generic types and @Key annotations accessed via reflection
-keepclassmembers class * {
  @com.google.api.client.util.Key <fields>;
}
-keepattributes Signature,RuntimeVisibleAnnotations,AnnotationDefault
-dontwarn com.google.api.client.**
-dontwarn com.google.common.**

#---- Twitter
-include ../proguard-com.twitter.sdk.android.twitter.txt
-dontwarn okio.**

#---- Remove Logging
?    -assumenosideeffects class android.util.Log {?    
  public static int v(...);
  public static int i(...);
  public static int w(...);
  public static int d(...);?    
  public static int e(...);
?    }

#---- support design
-dontwarn …
Run Code Online (Sandbox Code Playgroud)

android proguard job-queue android-proguard

7
推荐指数
1
解决办法
2559
查看次数

node.js的类似Sidekiq的工作系统是什么?

(这里提到的关于这个主题的大多数问题都有点陈旧,我想知道那些年来Node生态系统发生了哪些变化.)

我基本上是想在node.js的应用程序中实现一个作业队列.我听说过Sidekiq在Ruby世界中的行动以及它的工作有多棒,并且想知道节点中是否存在类似的东西.

工作人员将使用Javascript编写,因此它不必是多语言(如果是,那就很好,但绝对不是必需的).

一个很大的优点是可视化当前正在运行的作业,失败的作业等.

你们用的是什么?你知道哪些lib /服务符合这些要求?

javascript job-queue job-scheduling node.js

7
推荐指数
2
解决办法
6485
查看次数

自行重新排列作业队列的方法

我有一个作业队列(使用Amazon SQS),它将作业交给许多机器,用于通过HTTP获取和处理各种文档.有数百个不同的主机被访问,并且没有可预测的作业顺序.

为了礼貌,我不希望我的系统在一台主机上反复敲击.因此,如果我得到一份工作#123从example.com获取某些内容,但我发现我在过去的X秒内刚刚从example.com获取了另一件事,我应该转向其他内容并保存作业#123 for后来.

问题是,实现这种模式的好方法是什么?

似乎第一步是让作业运行者在所有域的某个位置保留一个列表,并且最后一次访问该域上的某些内容.我想这可能是一个简单的数据库表.

如果消息处理器获得必须延迟的作业,则有许多可能的选项可用于执行操作.

  1. 只需将消息的副本推送到队列的末尾,然后将其丢弃而不执行它.希望在下一次出现时,足够的时间过去了.这可能会导致大量冗余SQS消息,尤其是在同一域的大型作业集群同时通过的情况下.

  2. 在礼貌要求可以执行工作之前,需要休息几秒钟.这可能导致许多队列处理器同时无所事事.

  3. 接受作业,但将其保存在每个队列处理器上的某个本地队列中.我想每个处理器都可以通过这种方式"声称"一些工作,然后选择以任何顺序处理它们以达到最大程度的礼貌.这仍然是不可预测的,因为每个队列处理器需要知道被其他所有域击中的域.

  4. 为每个域建立单独的队列,并为每个队列分配一个进程.每个进程都必须在执行每个作业之间暂停X秒,因此会有很多睡眠进程开销,但这可能不是一件坏事.

你有设计这种东西的经验吗?你会推荐什么策略?

parallel-processing perl design-patterns job-queue amazon-sqs

6
推荐指数
1
解决办法
453
查看次数

node.js中的作业队列

我在node.js中寻找一个可以由php调用的作业队列管理器.这适用于需要发送电子邮件,创建pdf文件等的Web应用程序,我想要执行php进程的异步操作.

过程示例:

  1. 用户请求php页面
  2. Php调用作业队列管理器并添加任务
  3. 任务在node.js中与php异步执行,最好是在它更安静的时候
  4. 任务是执行php脚本

为什么这个"复杂"系统?

  1. 我们用php编写所有的web应用程序(Zend Framework)
  2. 我们想开始学习node.js
  3. 我们需要一个异步过程(快速响应!)
  4. "真正的"任务也应该是一个PHP脚本,利用已经编写的php类,可以轻松访问数据库连接并尽可能地干燥

该系统的使用案例:

  1. 用户注册自己,系统会发送欢迎电子邮件
  2. 用户完成电子商务订单,系统将发送发票

最后,我们还想使用node-cron来执行非系统范围的cron任务(非常特定于应用程序).Node-cron将调用作业队列管理器,随后将运行php脚本.

节点中是否有这样的应用程序?

php queue zend-framework job-queue node.js

5
推荐指数
1
解决办法
3666
查看次数

iOS作业队列类似于Path的android优先级作业队列

有没有人有类似于Path的Android优先作业队列的iOS作业队列,他们不介意与社区分享?我是iOS的新手,所以我不确定平台本身是否提供了这样的解决方案.在Android上没有这样的东西存在所以我不得不使用Path慷慨提供的库.如果iOS本身或Xcode有这样的解决方案/ API请指点我.如果不是,请分享你的,如果你不介意.谢谢.

基本上我正在寻找一个工作队列,即使没有网络也可以允许用户将数据发送到服务器:这意味着即使用户应该关闭iPhone,队列也会保留数据.然后在稍后的某个时间,当系统检测到网络时,将数据推送到服务器.

SO上已经存在类似的问题所以我将其包含在内以获取更多细节:如何在android上排队数据以进行服务器调度.不同的是,我的问题是iOS,他们的问题是Android.

用例

我的情况是想象用户正在地铁(没有网络)登上火车,但决定发送电子邮件.然后关闭应用程序,甚至关闭手机.然后一小时后,当用户重新打开手机后,当检测到网络时,应用程序会发送电子邮件.

objective-c job-queue ios ios7

5
推荐指数
1
解决办法
879
查看次数

Bull队列:通过在jobId中使用部分时间戳来确保时间段内作业的唯一性

我需要确保添加到队列中的同一作业在一段时间内不会重复。

\n\n

是否值得D/M/Y-HH:M在我的独特中包含部分时间戳(即)jobId,以便仅在不在同一分钟内时才进行处理?

\n\n

如果在 处添加一项作业,在 处添加12:01另一项作业,它仍然会重复12:09\xe2\x80\x93,它仍然会重复,或者 Bull 是否有更好的方法来做到这一点?

\n

priority-queue message-queue job-queue node.js bull.js

5
推荐指数
1
解决办法
6567
查看次数

芹菜为什么需要消息代理?

由于芹菜是一个工作队列/任务队列,名称说明它可以维护其任务并对其进行处理。那么为什么它需要像rabbitmq或redis这样的消息代理?

job-queue rabbitmq celery

5
推荐指数
1
解决办法
1005
查看次数

如何使用Kue处理预定的重复性工作?

在我的webapp中,用户可以创建需要生成并在每个月的某些日期发送的定期发票.例如,可能需要在每个月的5号发送发票.

我正在使用Kue来处理我所有的后台工作,所以我也想在这种情况下这样做.

我目前的解决方案是每小时setInterval()创建一份processRecurringInvoices工作.然后,此作业将从数据库中查找所有定期发票,并generateInvoice为每个定期发票创建单独的作业.

然后,generateInvoice作业将实际生成发票,如果需要,还将创建sendInvoiceToEmail将通过电子邮件发送发票的作业.

目前这个解决方案对我来说很好,因为它有一个很好的关注点,但是,我有以下问题:

  1. 在主要processRecurringInvoices工作上调用done()之前,我不确定是否应该等待所有"子"工作完成?
  2. 我应该在哪里处理错误?我应该把它们送回processRecurringInvoices工作岗位,还是应该为每项工作单独处理?
  3. 如何确保如果处理需要更长时间(超过一小时),并且任何一个processRecurringInvoices或任何子作业仍在运行,processRecurringInvoices则不会再次创建作业?有点像独特的工作,还是互相排斥?

worker job-queue node.js kue

4
推荐指数
1
解决办法
1784
查看次数