标签: redistogo

sidekiq不会在heroku上使用Redistogo生成sidekiq.pid文件

我一直在为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)

pid ruby-on-rails heroku redistogo sidekiq

19
推荐指数
3
解决办法
8366
查看次数

如何连接到redistogo?如何查看数据?

请仔细阅读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"

redis redistogo

12
推荐指数
1
解决办法
2699
查看次数

Redis Queue + python-rq:正确的模式,以防止高内存使用?

我们目前正在使用我们的Heroku托管的Python应用程序使用Redis.

我们将Redis与python-rq一起用作任务队列,以延迟执行一些时间紧迫的任务.任务是从PostgreSQL数据库中检索一些数据并将结果写回给它 - 因此Redis实例中根本没有保存有价值的数据.我们注意到,根据执行的作业数量,Redis正在消耗越来越多的内存(增长@ 10 MB /小时).CLI上的FLUSHDB命令修复此问题(将其降至约700kB的RAM),直到RAM再次满为止.

根据我们的(未更改的标准)设置,作业结果保持500秒.随着时间的推移,一些作业当然会失败,并且它们会被移动到失败的队列中.

  • 我们必须采取哪些不同的方式才能使用稳定的RAM来完成任务?
  • RAM消耗来自哪里?
  • 我可以完全关闭持久性吗?
  • 从文档我知道500秒TTL意味着一个密钥然后"过期",但没有真正删除.此时密钥是否还消耗内存?我可以以某种方式改变这种行为吗?
  • 它是否与失败的队列有关(显然没有TTL附加到作业,这意味着(我认为)这些是永久保存的)?
  • 只是好奇:当将RQ纯粹用作队列时,Redis DB中保存了什么?它是实际的可执行代码还是只能找到要执行的函数的位置?

很抱歉这些漂亮的noobish问题,但我对排队的话题不熟悉,经过2天以上的研究,我已经达到了一个我不知道下一步要做的事情.谢谢,KH

python asynchronous heroku redis redistogo

11
推荐指数
1
解决办法
2014
查看次数

"非持久性"对Heroku的Redis To Go Nano计划意味着什么?

我最近注册了Heroku的Redis To Go https://addons.heroku.com/redistogo.目前,我正在使用免费的Nano计划,其中说:

  • 5 MB Redis实例
  • 1数据库
  • 非持久
  • 没有备份
  • 10个连接

我得到'没有备份'等意思,但找不到什么是'非持久'的任何信息?这是否意味着每次部署时都会消除数据?日常?时不时?当Heroku崩溃?

heroku redis redistogo

9
推荐指数
1
解决办法
2019
查看次数

Heroku和Redistogo Nano达到了最大客户

我使用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)

heroku redis celery celerybeat redistogo

8
推荐指数
1
解决办法
3619
查看次数

从redis pub/sub中的连接断开中恢复

我正在运行连接到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程序中完成吗?我应该有外部看门狗吗?

python redis redistogo

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

Redis on Heroku Sharding

我正在评估使用heroku和RedisToGo插件的可能性.

我读过有可能设置带有分片和复制的独立redis集群.

但是在heroku文档中,我看到的是JedisPool使用示例而不是ShardedJedisPool.

这是否意味着heroku上的redis不会缩放和碎片?还是内部完成?

heroku redis redistogo

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

同一个heroku帐户上的两个应用程序是否可以访问同一个RedisToGo服务器?

同一个heroku帐户上的两个应用程序是否可以访问同一个RedisToGo服务器?我们有两个应用程序都需要Web访问,但具有非常不同的结构.所以他们不能在同一个应用程序中使用dyno类型 - 但如果可以通过Redis为另一个人排队工作,那将会非常好.

heroku redistogo

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

使用Heroku和Rails 4.0.0设置Redis To Go

我正在尝试在我的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?

ruby-on-rails heroku redistogo

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

Heroku上的RQScheduler

我正在尝试使用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)

有关为什么会发生这种情况的任何想法?

python django heroku redis redistogo

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

如何将Heroku中的RedisToGo数据库复制到本地计算机?

我有一个node.js应用程序,使用RedisToGo并在Heroku中运行。我想将Redis To Go数据库复制到localhost进行测试。

在开发Ruby on Rails应用程序时,我可以使用heroku db:pull命令。我可以将任何类似命令用于node.js和Redis吗?

谢谢。

heroku redis node.js redistogo

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

如何估计redis数据库的大小?

我正在尝试决定在Heroku中使用Redis To Go选项的大小.

假设我想在Redis中保留大约一百万条记录以便于访问.

如果每条记录的大小约为1-10kb,这是否意味着整个数据库将为1,000,000*1-10kb,或者是否存在一些我不知道的隐藏开销?

size heroku redis redistogo

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