我有一个Rails5应用程序,我开始使用Sidekiq、Heroku和Redis将各种作业转移到后台。到目前为止,我有ResetFinanceDataWorker,它有一个同名的类。//reset_finance_data_worker.rbclassResetFinanceDataWorkerincludeSidekiq::Workersidekiq_optionsretry:falsedefperform()endend我可以通过调用ResetFinanceDataWorker.perform_in(10.seconds)来调用它。理想情况下,我希望在一个文件中有多个工作人员,如下
在开发中,带有uwsgi的flask-socketio(4.1.0)仅需1个worker和标准初始化就可以很好地工作。现在我正在为生产做准备,并希望它与多个worker一起工作。我做了以下事情:在init_app中添加了redismessage_queue:socketio=SocketIO()socketio.init_app(app,async_mode='gevent_uwsgi',message_queue=app.config['SOCKETIO_MESSAGE_QUEUE'])(旁注:我们也在应用程序本身中使用了Redis)在我们使用uwsgi运行的文件顶部进行gevent
我有一些Resque工作人员的Rails应用程序。似乎我有2个worker同时运行的限制(应用程序在EC2上运行,生产中使用Apache)。有什么办法可以提高这个限制吗?编辑:我在redis.conf中有maxclients0我可以通过rake启动10个工作人员,但是当他们实际排队时,我在浏览器中得到“ERRmaxnumberofclientsreached”..编辑:更新错误(在原始文件中是正确的)编辑:实际上有config/initializers/Resque.rb指向redis-to-go(应用程序早期的雏形),一旦我删除它,指向config/resque.yml(使用loca
几天来我一直在试图找出问题所在,但没有成功,我在HerokuCedar上运行Rails3.1.3withUnicorn并使用Resque1.20进行后台作业。添加了Redis附加组件并设置了REDISTOGO_URL,我将resque.rb初始化程序设置为require'resque'Resque.after_fork=Proc.new{ActiveRecord::Base.establish_connection}uri=URI.parse(ENV["REDISTOGO_URL"])REDIS=Redis.new(:host=>uri.host,:port=>uri.port,:pa
我在我的ruby应用程序中做了几项上帝会照顾的工作。但是,当服务器重新启动时,作业停止。我想避免这种情况,所以我在我的服务器上制作了这个脚本。看起来像这样。my_app.sh#!/bin/bash#godtasks#case$1instart)/usr/local/rvm/gems/ruby-1.9.3-p194/bin/god/usr/local/rvm/gems/ruby-1.9.3-p194/bin/godstart/usr/local/rvm/gems/ruby-1.9.3-p194/bin/godload/usr/local/Linux/apache2/www/hej.s
我是redis的新手,目前我正在为redis使用PHPresque。如何在phpresque中定义作业? 最佳答案 这在2012年10月13日发布的最新版本的PHP-resque中有所改变。根据变更日志,“将作业参数包装在数组中以提高与rubyresque的兼容性。”这意味着如果您已经升级到PHP-Resque1.2,您将从$args[0]访问作业。 关于php-如何在phpresque中为redis定义作业?,我们在StackOverflow上找到一个类似的问题:
我有一个繁重的处理需要使用很多机器来完成。目前,Resque有700名工作人员在运行,一切正常。但是,如果我将worker数量增加到1000,我就会开始遇到很多Redis超时。我几乎可以肯定限制在redis中,因为我什至无法再从redis-cli连接。resque或redis是否有任何限制?或者它可能是一些文件系统限制?有谁知道这个配置在哪里,所以我可以更改它?谢谢。 最佳答案 您的服务器可能达到了资源限制。在Linux上,检查:ulimit-asysctlnet.ipv4.ip_local_port_rangesysctlnet.
我在后台作业中使用Resque+RedisToGo。我在Heroku上运行后台任务时遇到问题。这很奇怪,因为我第一次运行后台作业时,它的执行没有任何问题。但是当我再次运行它时,它没有执行。我必须每隔一段时间运行“herokurestart”才能使后台成功完成....例如。如果我的Resque后台操作中有以下代码:moduleEncodeSong@queue=:encode_songdefself.perform(media_id,s3_file_url)puts'foobar'media=Media.find(media_id)puts'mediaidissupposedtobeher
我的Rails应用程序配置了Resque和Redis。我正在使用上帝来启动/停止worker。到目前为止,我使用的是Redis-to-go,但自从我转移到EC2高内存实例后,我认为在该EC2实例上运行Redis服务器并让所有事情发生在那里是一个更好的主意。这是个好主意吗? 最佳答案 我们在与应用其余部分相同的服务器上运行我们的Redis实例(用于resque)。很棒,而且占用的内存很少。但是我们每天只处理大约5000个工作。无论哪种方式,假设您只将Redis用于Resque,我们已经以极低的CPU或内存开销完成了它。Redis作为R
我正在尝试将我的Reddis服务器移至外部设备。已在github上关注Resque自述文件。在开发模式下,它会很好地加载配置并连接到6379上的本地主机:resque.rb初始化器rails_root=ENV['RAILS_ROOT']||File.dirname(__FILE__)+'/../..'rails_env=ENV['RAILS_ENV']||'development'resque_config=YAML.load_file(rails_root+'/config/resque.yml')Resque.redis=resque_config[rails_env]resque