我一直在为herki生产环境中的sidekiq工作而奋斗了两天.我已经阅读了有关类似问题的所有可用文档,但仍然无法生成有效的解决方案,我真的很喜欢一些帮助!
在heroku上部署后,我的应用程序崩溃,我得到以下错误堆栈跟踪:
2014-09-23T23:38:40.905093+00:00 app[worker.1]: No such file or directory @ rb_sysopen - /app/tmp/pids/sidekiq.pid
2014-09-23T23:38:40.905122+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/bin/sidekiq:23:in `<main>'
2014-09-23T23:38:40.905119+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/gems/sidekiq-3.2.5/bin/sidekiq:7:in `<top (required)>'
2014-09-23T23:38:40.905117+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/gems/sidekiq-3.2.5/lib/sidekiq/cli.rb:347:in `write_pid'
2014-09-23T23:38:40.905115+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/gems/sidekiq-3.2.5/lib/sidekiq/cli.rb:347:in `open'
2014-09-23T23:38:40.905121+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/bin/sidekiq:23:in `load'
2014-09-23T23:38:40.905118+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/gems/sidekiq-3.2.5/lib/sidekiq/cli.rb:41:in `parse'
2014-09-23T23:38:40.905114+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.1.0/gems/sidekiq-3.2.5/lib/sidekiq/cli.rb:347:in `initialize'
2014-09-23T23:38:39.588001+00:00 heroku[worker.1]: State changed from starting to up
Run Code Online (Sandbox Code Playgroud)
首先,sidekiq在我的本地机器上正常工作.我正在使用heroku的REDISTOGO进行redis,在本地制作中,sidekiq已正确指向REDISTOGO且运行良好.
第二,根据堆栈轨迹,特别是这条线No such file or directory @ rb_sysopen - /app/tmp/pids/sidekiq.pid; 它让我认为,由于某种原因sidekiq.pid,在heroku上运行时文件没有正确生成.在本地环境中,sidekiq.pid每次在app/tmp/pids/目录中启动应用程序时都会生成文件,并且pid每次都会分配不同的编号.我就是guessing在heroku上运行时,sidekiq试图从这个文件中读取但却找不到它.
这是我的内容Procfile:
web: bundle …Run Code Online (Sandbox Code Playgroud) 请仔细阅读https://redistogo.com/documentation/introduction_to_redis?language=en但无法使其正常运行.
redis-cli -h my-host -p 1234 -a mypassword
Run Code Online (Sandbox Code Playgroud)
什么是my-host?
怎么看数据库?
Web控制台似乎不显示所有数据.keys失败.
redis-cli -h返回"无法连接到Redis"
我们目前正在使用我们的Heroku托管的Python应用程序使用Redis.
我们将Redis与python-rq一起用作任务队列,以延迟执行一些时间紧迫的任务.任务是从PostgreSQL数据库中检索一些数据并将结果写回给它 - 因此Redis实例中根本没有保存有价值的数据.我们注意到,根据执行的作业数量,Redis正在消耗越来越多的内存(增长@ 10 MB /小时).CLI上的FLUSHDB命令修复此问题(将其降至约700kB的RAM),直到RAM再次满为止.
根据我们的(未更改的标准)设置,作业结果保持500秒.随着时间的推移,一些作业当然会失败,并且它们会被移动到失败的队列中.
很抱歉这些漂亮的noobish问题,但我对排队的话题不熟悉,经过2天以上的研究,我已经达到了一个我不知道下一步要做的事情.谢谢,KH
我最近注册了Heroku的Redis To Go https://addons.heroku.com/redistogo.目前,我正在使用免费的Nano计划,其中说:
我得到'没有备份'等意思,但找不到什么是'非持久'的任何信息?这是否意味着每次部署时都会消除数据?日常?时不时?当Heroku崩溃?
我使用RedisToGo Nano插件在Heroku上使用celerybeat
有一个网络dyno和一个工人dyno
celerybeat工作人员每分钟都要执行一项任务.
问题是:每当我部署新的提交时,dynos重启,我就会收到此错误
2014-02-27T13:19:31.552352+00:00 app[worker.1]: Traceback (most recent call last):
2014-02-27T13:19:31.552352+00:00 app[worker.1]: File "/app/.heroku/python/lib/python2.7/site-packages/celery/worker/consumer.py", line 389, in start
2014-02-27T13:19:31.552352+00:00 app[worker.1]: self.reset_connection()
2014-02-27T13:19:31.552352+00:00 app[worker.1]: File "/app/.heroku/python/lib/python2.7/site-packages/celery/worker/consumer.py", line 727, in reset_connection
2014-02-27T13:19:31.552352+00:00 app[worker.1]: self.connection = self._open_connection()
2014-02-27T13:19:31.552352+00:00 app[worker.1]: File "/app/.heroku/python/lib/python2.7/site-packages/celery/worker/consumer.py", line 792, in _open_connection
2014-02-27T13:19:31.552352+00:00 app[worker.1]: callback=self.maybe_shutdown)
2014-02-27T13:18:23.864287+00:00 app[worker.1]: self.on_connect()
2014-02-27T13:18:23.864287+00:00 app[worker.1]: File "/app/.heroku/python/lib/python2.7/site-packages/redis/connection.py", line 263, in on_connect
2014-02-27T13:18:23.864287+00:00 app[worker.1]: if nativestr(self.read_response()) != 'OK':
2014-02-27T13:18:23.864287+00:00 app[worker.1]: File "/app/.heroku/python/lib/python2.7/site-packages/redis/connection.py", line 314, in read_response
2014-02-27T13:18:23.864287+00:00 app[worker.1]: raise response
2014-02-27T13:18:23.864287+00:00 app[worker.1]: ResponseError: max …Run Code Online (Sandbox Code Playgroud) 我正在运行连接到redis数据库的客户端.客户端使用WiFi连接,有时会断开连接.不幸的是,当发生这种情况时,程序会继续运行而不会抛出任何类型的警告.
r = redis.StrictRedis(host=XX, password=YY...)
ps = r.pubsub()
ps.subscribe("12345")
for items in ps.listen():
if items['type'] == 'message':
data = items['data']
Run Code Online (Sandbox Code Playgroud)
理想情况下,我所寻求的是一个包罗万象的事件时,连接丢失,尝试重新建立连接,做一些纠错,然后把事情备份和运行.这应该在python程序中完成吗?我应该有外部看门狗吗?
我正在评估使用heroku和RedisToGo插件的可能性.
我读过有可能设置带有分片和复制的独立redis集群.
但是在heroku文档中,我看到的是JedisPool使用示例而不是ShardedJedisPool.
这是否意味着heroku上的redis不会缩放和碎片?还是内部完成?
同一个heroku帐户上的两个应用程序是否可以访问同一个RedisToGo服务器?我们有两个应用程序都需要Web访问,但具有非常不同的结构.所以他们不能在同一个应用程序中使用dyno类型 - 但如果可以通过Redis为另一个人排队工作,那将会非常好.
我正在尝试在我的Rails 4应用程序上设置Redis To Go.我希望能够将它部署到Heroku.
到目前为止,这就是我所做的:
通过该dashboard.heroku网站,我使用单击安装Nano版本的Redis To Go来安装我的应用程序的插件.
我添加gem 'redis'到我的gemfile中.
在config/environments/development.rb我添加这一行:
ENV["REDISTOGO_URL"] = 'redis://redistogo:b9fc604b1c86a1f6c232ce1dd16cd989@albacore.redistogo.com:10280/'
Run Code Online (Sandbox Code Playgroud)
然后,我创建了一个如下所示的config/initializers/redis.rb文件:
uri = URI.parse(ENV["redis://redistogo:b9fc604b1c86a1f6d872ce1dd16cd989@albacore.redistogo.com:10280/"] || "redis://localhost:6379/")
REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)
Run Code Online (Sandbox Code Playgroud)
Redis在我的控制台中运行命令时,我收到此错误:
Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)
我在这里做错了什么,我需要做些什么来确保我可以在开发中测试并在没有任何问题的情况下部署到Heroku?
我正在尝试使用RedisToGo在Heroku上使用django-rq运行rqscheduler.我已经按照自述文件(https://github.com/ui/django-rq)中的描述实现了django-rq .
我有一个工作人员启动一个rqworker,另一个工作人员使用自述文件中建议的管理命令启动rqscheduler.rqworker成功启动,但我继续使用rqscheduler遇到此错误:
redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused.
Run Code Online (Sandbox Code Playgroud)
在我的设置中,我有我的Redis队列的配置:
RQ_QUEUES = {
'default': {
'HOST': 'localhost',
'PORT': 6379,
'DB': 0,
'PASSWORD': '*****',
'DEFAULT_TIMEOUT': 500,
},
'high': {
'URL': os.getenv('REDISTOGO_URL', 'redis://localhost:6379/0'), # If you're on Heroku
'DEFAULT_TIMEOUT': 500,
},
'low': {
'HOST': 'localhost',
'PORT': 6379,
'DB': 0,
}
}
Run Code Online (Sandbox Code Playgroud)
我在我的Procfile中有这个:
web: gunicorn app.wsgi --log-file -
worker: python manage.py rqworker high
scheduler: python manage.py rqscheduler
Run Code Online (Sandbox Code Playgroud)
有关为什么会发生这种情况的任何想法?
我有一个node.js应用程序,使用RedisToGo并在Heroku中运行。我想将Redis To Go数据库复制到localhost进行测试。
在开发Ruby on Rails应用程序时,我可以使用heroku db:pull命令。我可以将任何类似命令用于node.js和Redis吗?
谢谢。
我正在尝试决定在Heroku中使用Redis To Go选项的大小.
假设我想在Redis中保留大约一百万条记录以便于访问.
如果每条记录的大小约为1-10kb,这是否意味着整个数据库将为1,000,000*1-10kb,或者是否存在一些我不知道的隐藏开销?