草庐IT

作业队

全部标签

ruby-on-rails - 集群中的 Sidekiq 作业

我在两台服务器上运行我的应用程序。每个人都有一份工作,检查every2.minutesdorunner"MailmanCheckJob.perform_later"end现在这个作业在每台服务器上运行。它检查新电子邮件并处理它们。如果电子邮件处理需要4-5分钟。一条消息被两个作业接收。我如何确保每封电子邮件只被挑选一次。一旦所有处理结束,每封电子邮件都会被标记为已读。它连接到远程redis。它们由monit监控。是否有在集群中运行sidekiq的选项,以便只有一台服务器选择并运行作业。-A 最佳答案 您正在Sidekiq中寻找定期工

node.js - 如何在多个 docker 容器从 redis kue nodejs 消耗时一次处理单个作业

我有多个docker容器,它们使用来自同一个rediskue队列的作业。问题是他们从事相同的工作。我的需要是在一个容器上工作,然后在它完成一些其他容器工作之后。作业的顺序很重要。如果我不能在rediskue中完成,但可以与其他队列管理器(如kafka)一起完成,那也很好 最佳答案 我所做的是使用switchcase保持状态机:varindex;functionwhatever(){if(typeofstate==='undefined'){state=0;}switch(state){case0://Dowhateverstuffn

Laravel:从队列中删除作业

有没有办法从队列中删除所有作业。我们使用LaravelHorizo​​n来监控它。我们认识到队列中有很多作业在运行。 最佳答案 没有直接的方法可以做到这一点,但根据您使用的驱动程序,您可以手动删除它们。我正在使用数据库驱动程序,如果排队的项目太多或有一个被卡住,我经常会删除这些项目。在我的项目中,我为作业创建了一个数据库模型来执行此操作。 关于Laravel:从队列中删除作业,我们在StackOverflow上找到一个类似的问题: https://stacko

spring - 使用 Java、spring、redis 的作业队列和 Worker

我想创建Jobs和Workers并处理由REST请求创建的每个Jobs,我还想为单个工作设置多级workers。场景:我的客户将通过RESTAPI发布请求,每个REST请求都是耗时的作业将该请求作为新作业存储到数据库中,并将ID存储到redis中定义一个worker,它将从redis中提取ID处理作业并使该数据库记录完成是否有任何框架和技术或技术组合可用于在SpringMVC或JAXRSJersey上创建我的工作和工作人员。我已经使用PHP、LaravelQueue、LaravelHorizo​​n和Redis完成了完全相同类型的项目,但现在我需要使用JavaTechStack进行开发

node.js - 在多个 kubernetes pod/实例中处理 Redis KUE 作业

我将Sails.js用于我从GoogleCloudkubernetes集群中的Dockerfile部署的API,并使用3-5个pod扩展工作负载。API提供端点来上传单个图像文件和更大的zip文件,我直接在当前APIpod/实例上提取这些文件。单个图像文件和提取的存档内容(100-1000个文件,总共15-85mb的内容),我必须上传到各种存储桶。这就是rediskue发挥作用的地方。为了确保API不会长时间阻止上传请求,我创建了延迟kue作业以将所有上传的文件和文件夹移动到存储桶或链式作业,并首先在ImageMagick的帮助下创建缩略图。所有这些都可能需要一些时间,具体取决于集群当

node.js - 什么是作业队列的好用例

我想要一个好的工作队列用例来更新所有关注者的通知(存储在Zset中,时间戳作为分数)而不删除关注者ZSET追随者USER11234567890USER22345678912 最佳答案 不确定“作业队列用例”是什么意思,但是RedisLISTS使用原子PUSH/POP操作创建一个很棒的队列。您也可以使用PUB/SUB将通知发布到单个“队列”,其中有一个或多个订阅的工作人员将发送通知。从排序集中获取订阅者列表而不删除它们是默认行为。您必须明确删除它们。因此,一个简单的ZRANGEfollowers0,-1将获取所有这些。如果一次获取所有

ruby-on-rails - 使用带有 Resque 后台作业的 Controller 方法

我在Rails4上使用带Redis的Resque。我的问题:如何在我的后台作业中使用当前在我的application_controller中定义的Controller方法?这是我定义的当前方法:defpush_to_google(token,message)iftoken.present?gcm=GCM.new("843jf9384fj839f848j890fj3")registration_ids=["#{token}"]#anarrayofoneormoreclientregistrationtokensoptions={data:{notification:"#{message}

ruby-on-rails - 如何防止许多 sidekiq 作业超过 API 调用限制

我正在开发一个RubyOnRails应用程序。我们有许多sidekiqworker可以同时处理多个作业。每个作业都会调用ShopifyAPI,Shopify设置的调用限制是每秒2次调用。我想同步它,以便在给定的一秒钟内只有两个作业可以调用API。我现在这样做的方式是这样的:#frozen_string_literal:trueclassSynchronizerattr_reader:shop_id,:queue_name,:limit,:wait_timedefinitialize(shop_id:,queue_name:,limit:nil,wait_time:1)@shop_id=

google-cloud-dataflow - 如何以编程方式取消运行时间过长的 Dataflow 作业?

我正在通过PythonAPI在Dataflow上使用ApacheBeam从Bigquery读取数据,对其进行处理,然后将其转储到Datastore接收器中。不幸的是,作业经常会无限期地挂起,我必须手动停止它。当数据写入Datastore和Redis时,从Dataflow图中我注意到只有几个条目卡住并导致作业挂起。因此,当有15台16核机器的作业运行9小时(正常情况下,作业运行30分钟)时,会导致巨大的成本。也许有一种方法可以设置一个计时器,如果超过时间限制,该计时器会停止Dataflow作业? 最佳答案 如果你能创建一个custom

ruby-on-rails - 使用 Redis 计算特定的预定 Sidekiq 作业

有没有办法使用Redis检索以下作业数?Sidekiq::ScheduledSet.new.inject(0)do|memo,job|memo+=1ifjob.at即计划的作业应该已经运行,但没有运行。这适用于较小的队列大小,但对于较大的队列(60k计划作业需要30秒以上)的扩展性很差。谢谢! 最佳答案 "ZRANGEBYSCOREschedule'-inf'#{Time.now.to_f}"https://redis.io/commands/zrangebyscore 关于ruby-o