草庐IT

celery_worker

全部标签

python - Celery 和 Redis 后端的问题

我目前设置了一个系统,它使用带有redis的celery后端做一堆异步任务,比如发送电子邮件,拉取社交数据,爬取等。一切都很好,但我我有小组弄清楚如何监控系统(也就是数字排队消息)。我开始寻找celery的来源,但是我想我会在这里发布我的问题:首先,这是我的配置:BROKER_BACKEND="redis"BROKER_HOST="localhost"BROKER_PORT=6379BROKER_VHOST="1"REDIS_CONNECT_RETRY=TrueREDIS_HOST="localhost"REDIS_PORT=6379REDIS_DB="0"CELERY_SEND_EV

postgresql - Heroku 上的 Resque Workers 被锁定在 Postgres DB SSL 之外 - 尚未修复

我在heroku上使用resque/redis作为后台作业发送电子邮件。对于我发送的第一封电子邮件,它工作正常,但之后我收到错误:(ActiveRecord::StatementInvalid:PG::Error:SSLerror:decryptionfailedorbadrecordmac:)...我看过其他的问题/答案说要添加到初始值设定项:Resque.after_fork=Proc.new{ActiveRecord::Base.establish_connection}或者Resque.before_fork=Proc.new{ActiveRecord::Base.establ

python - 使用 Celery 与 Gevent 进行实时、同步的外部 API 查询

我正在开发一个Web应用程序,该应用程序将接收来自用户的请求,并且必须访问许多外部API才能为该请求编写答案。这可以直接从主Web线程使用gevent之类的东西来扇出请求来完成。或者,我在想,我可以将传入的请求放入一个队列中,然后使用worker来分配负载。这个想法是试图保持实时,同时将请求分配给几个工作人员。这些工作人员中的每一个都只会查询许多外部API中的一个。然后,他们收到的响应将经过一系列转换,保存到数据库中,转换为通用模式并保存到通用数据库中,最后组合成一个大响应,通过Web请求返回。Web请求很可能会一直阻塞,用户在等待,所以保持尽可能快地排队和出队很重要。外部API调用可

python - os x 10.8.5 上的 Celery WorkerLostError

我有使用celery的Django应用程序。celery作为经纪人与兔子一起工作。当我在任务中使用redis时,celery返回WorkerLostError。启动celery的命令:pythonmanage.pyceleryd-BE--loglevel=INFO代码示例:classTestTask(Task):defrun(self):rds=redis.Redis(db=0)rds.set('test','11')val=rds.get('test')printval输出:python(1674)malloc:***errorforobject0x7fdaf125e908:inco

python - 执行其他 celery 任务不起作用的 celery 周期性任务

我有一个返回其他API列表的API。我需要每15分钟访问一次这些API,并将返回的数据放入数据库。下面是我使用celery和redis在celery_worker.py文件中写的。但是所有任务都没有开始。list_of_APIs=requests.get(the_api_that_returns_list_of_APIs).json()CELERYBEAT_SCHEDULE={'every-15-minute':{'task':'fetch_data_of_all_APIs','schedule':timedelta(minutes=15),},}@celery.taskdefacce

django - 带有 Celery 的 Redis 键的自定义前缀

我正在使用Redis作为Django和Celery之间的代理。我有权访问的redis实例与许多其他应用程序共享,因此代理不可靠(它使用的rediskey被其他人删除,消息经常发送给其他应用程序中的工作人员)。换redis数据库也没有解决问题(数据库少,应用多)。如何将Celery配置为使用自定义字符串作为它使用的所有键的前缀?文档提到了向队列名称添加前缀的方法,但这不会影响redis键。据我所知,底层库(Kombu)似乎不允许用户为其使用的键添加前缀。 最佳答案 为所有Redis键添加前缀的功能已作为this的一部分添加.现在你可以

ruby-on-rails - Resque Workers 没有在正确的数据库上工作

我将Resque设置为像这样使用数据库6:Resque.redis="localhost:6779:6"然后我开始我的resque如下:$RAILS_ENV=testPIDFILE=./resque.pidQUEUE=*rakeresque:work当我检查worker时,没有:pry(main)>Resque.redis="localhost:6779:6"=>"localhost:6779:6"pry(main)>Resque.workers=>[]但是当我检查数据库0时,我可以看到它在那里:pry(main)>Resque.redis="localhost:6779:0"=>"l

ruby-on-rails - 通过 Heroku 上的 ruby​​ 守护进程 worker 拒绝 Redis 连接

作为“web”Heroku进程运行的Rails3.2.6应用程序正在使用ENV["REDISTOGO_URL"]环境变量连接到Redis:irb(main):002:0>Redis.current=>#-----/initializers/redis.rbifRails.env.development?Redis.current=Redis.newelsifRails.env.test?Redis.current=Redis.newelsifRails.env.production?uri=URI.parse(ENV["REDISTOGO_URL"])Redis.current=Red

ruby-on-rails-3 - sidekiq true god.rb 从不运行我的 worker ,而来自终端的相同命令呢?

运行god.rb来启动和监控Sidekiq这不起作用。在我的sidekiq神配置下。在生产环境中从终端手动运行sidekiq-C/srv/books/current/config/sidekiq.yml确实工作正常,但sidekiqgod.rb配置没有任何想法为什么会发生这种情况?日志中没有太多内容。God.watchdo|w|w.name="sidekiq"w.interval=30.secondsw.start="cd#{ENV['RAILS_ROOT']};sidekiq-C/srv/books/current/config/sidekiq.yml"w.stop="cd#{ENV

ruby-on-rails - Resque 不运行 worker 从队列中选择工作 - Rails

我有一个resque作业要运行。我尝试通过发出命令将我的工作排队到队列中:Resque.enqueue("QUEUE",params)它将作业推送到队列中。我尝试以localhost:3000/resque运行resque接口(interface)。它向我显示待处理的工作。但它也显示没有工作人员在运行。我运行raketask以通过命令启动worker:(QUEUE='*'bundleexecrakeresque:work)。我的redis实例是Resque.redis=#>.当我尝试运行该rake任务时,我也没有收到任何错误。如果您需要更多信息,请告诉我。