我有Redis作为我的缓存服务器。当我在一个任务上调用delay()时,甚至需要超过10个任务才能开始执行。知道如何减少这种不必要的滞后吗?我应该用RabbitMQ替换Redis吗? 最佳答案 如果不能检查您的应用程序和服务器日志,很难说延迟的原因是什么,但我可以向您保证,延迟是不正常的,不是Celery或使用Redis作为经纪人。我过去经常使用这种组合,任务的执行发生在几毫秒内。我首先要确保创建任务的客户端、代理(Redis)和任务使用者(celeryworker)之间没有网络相关问题。祝你好运!
有没有办法从重新请求队列中永久删除作业?以下命令删除作业,但当我重新启动工作人员和resque服务器时,作业会重新加载。Resque::Job.destroy("name_queue",Class)或Resque.remove_queue("name_queue") 最佳答案 问题是您没有删除通过resque添加到Redis服务器的作业的特定实例。因此,当您删除队列然后在重新启动服务器时将其添加回来时,该队列中的所有数据仍可能位于您的Redis服务器中。您可以在job.perform中解决这个问题,具体取决于您的实现。例如,如果您想
我有多个作业在Resque的多个队列中运行。我的问题是,当一个队列运行大量作业时,它会阻塞我的其他队列。如何让Resque运行并行队列,但仍将每个队列一次限制为一个作业? 最佳答案 您可以为每个队列启动不同的工作程序。为此,您必须在QUEUE环境变量上指定要处理的队列的名称。因此,如果您有3个队列,您将执行以下操作:QUEUE=queue1bundleexecrakeresque:workQUEUE=queue2bundleexecrakeresque:workQUEUE=queue3bundleexecrakeresque:wor
此外,管理内置“管理结构”(如标题中的结构)的Resque的最佳实践是什么?我应该用jedis.del(Stringkey)或类似的东西清除它们吗? 最佳答案 resque:failed是Resque本身的失败队列,而resque:stat是Resque的统计层,所以不用深入研究代码,我'我猜resque:stat:failed是Resque遇到了多少次失败的统计计数。个人看法。对我来说,管理它们的最佳方式始终是首先通过UI,如果不可能的话,然后通过控制台/后端。我尽量避免使用redis/jedis手动清除/设置key,因为我不想冒
我来了!我正在使用RubyonRails构建一个平台。我正在使用Resque-Redis来保存一些统计数据,但我发现了一些问题。我必须保存某个应用每天执行某项操作的次数,例如,如果该应用已运行,我必须保存该应用当天运行的信息。问题是一个应用程序可以同时被多个用户使用,现在问题来了。unlessstat=self.where(app_id:app_id,day:fire_at.to_date).firststat=StatsApp.new(app_id:app_id,day:fire_at.to_date)endstat.increment(action)逻辑:如果是一天中的第一次,则创
在我的Rails应用程序中,我试图接受我的工作API调用并让它们由后台工作人员处理。我在app/jobs/api_request_job.rb中有以下内容:classApiRequestJobdefself.perform(params)Query.new(params).startendendQuery类是执行HTTParty请求的地方(有许多方法用于不同的查询类型,具有与parks方法相同的基本格式:require'ostruct'classQueryincludeFourSquareattr_reader:results,:first_address,:second_addres
我想在不同的服务器上运行Resqueworker,从一台Redis服务器获取作业。我知道如何在Rails应用程序中配置它,但问题是我在每个服务器上都使用独立的Resque(https://github.com/dcestari/resque-standalone-sample)。所以我的问题是,如何在不安装Rails应用程序的情况下执行此操作,这可能吗?谢谢! 最佳答案 你需要告诉ResqueRedis在哪里:Resque.configuredo|config|#Settheredisconnection.Takesanyof:#S
将Resque与Redis结合使用我一直收到Redis的OOM命令在使用内存时不允许>'maxmemory'错误。现在很明显,我似乎应该将redis的内存从当前的500MB增加,但我想确保我也设置了正确的最大内存/数据驱逐策略,以便将redis与resque一起使用。目前它在volatile-lru上。(我一直在寻找这方面的文档,但找不到任何东西。)thisstackoverflowanswer以及来自redis的以下数据..keys=81824,expires=0,avg_ttl=0evicted_keys0expired_keys0...让我相信我配置错误,添加更多内存只会推迟问题
Redis和Resque是否需要从与我计划运行的应用相同的目录启动?通常,在使用unicorn启动我的应用程序之前,我会同时启动redis-server和TERM_CHILD=1QUEUES=*rakeresque:work。但老实说,我仍在研究Redis和Resque。所以我想知道的是:Redis和Resque(如上)是否应该从与我正在运行的应用程序相同的目录启动?或者它们可以从我mac上的任何目录启动吗? 最佳答案 Redis可以从任何目录启动,因为它不依赖于您的代码库。Resque应该从您的应用程序根目录启动,因为它会根据您可
我有一些Resque工作人员的Rails应用程序。似乎我有2个worker同时运行的限制(应用程序在EC2上运行,生产中使用Apache)。有什么办法可以提高这个限制吗?编辑:我在redis.conf中有maxclients0我可以通过rake启动10个工作人员,但是当他们实际排队时,我在浏览器中得到“ERRmaxnumberofclientsreached”..编辑:更新错误(在原始文件中是正确的)编辑:实际上有config/initializers/Resque.rb指向redis-to-go(应用程序早期的雏形),一旦我删除它,指向config/resque.yml(使用loca