gpt4 book ai didi

ruby-on-rails-3 - Heroku dyno/worker 在开始时崩溃

转载 作者:行者123 更新时间:2023-12-03 15:31:40 24 4
gpt4 key购买 nike

我有一个用 Rails 编写的应用程序,部署在 Heroku 上。我以前一直在做 1 个 web dyno,但是今天我发布了应用程序,流量很大所以我决定增加到 4 个 web dynos 和 1 个 worker dynos。我不知道为什么总是在我执行 heroku ps 时显示:

Process   State           Command                            
-------- -------------- ---------------------------------
web.1 up for 22s bundle exec rails server -p $PORT
web.2 up for 36s bundle exec rails server -p $PORT
web.3 up for 25s bundle exec rails server -p $PORT
web.4 up for 22s bundle exec rails server -p $PORT
worker.1 crashed for 7s bundle exec rake jobs:work

Worker dyno 在 heroku scale worker=1 后直接崩溃。日志是这样的:

2012-03-11T23:12:18+00:00 heroku[worker.1]: Starting process with command `bundle exec rake jobs:work`
2012-03-11T23:12:19+00:00 heroku[worker.1]: State changed from starting to up
2012-03-11T23:12:22+00:00 app[worker.1]: rake aborted!
2012-03-11T23:12:22+00:00 app[worker.1]: Don't know how to build task 'jobs:work'
2012-03-11T23:12:22+00:00 app[worker.1]:
2012-03-11T23:12:22+00:00 app[worker.1]: (See full trace by running task with --trace)
2012-03-11T23:12:23+00:00 heroku[worker.1]: Process exited with status 1
2012-03-11T23:12:23+00:00 heroku[worker.1]: State changed from up to crashed
2012-03-11T23:12:23+00:00 heroku[worker.1]: State changed from crashed to created
2012-03-11T23:12:23+00:00 heroku[worker.1]: State changed from created to starting
2012-03-11T23:12:32+00:00 heroku[worker.1]: Starting process with command `bundle exec rake jobs:work`
2012-03-11T23:12:32+00:00 heroku[worker.1]: State changed from starting to up
2012-03-11T23:12:36+00:00 app[worker.1]: rake aborted!
2012-03-11T23:12:36+00:00 app[worker.1]: Don't know how to build task 'jobs:work'
2012-03-11T23:12:36+00:00 app[worker.1]:
2012-03-11T23:12:36+00:00 app[worker.1]: (See full trace by running task with --trace)
2012-03-11T23:12:37+00:00 heroku[worker.1]: Process exited with status 1
2012-03-11T23:12:37+00:00 heroku[worker.1]: State changed from up to crashed

就是这样。你知道为什么吗? Web dynos 工作正常。我是否必须在我的应用程序中配置一些东西才能使用 worker dynos?

如果你能用人类语言向我解释一下,将 heroku 平台分为 web 和 worker dynos 背后的逻辑是什么,我将不胜感激?我已经多次阅读文档,但我仍然认为我没有理解它,因为我在一个有存储限制和其他东西的世界中长大。

最佳答案

Workers 用于后台处理,例如,发送电子邮件,从某些 Web 服务获取数据,通常它用于任何需要很长时间的任务,并且您不希望用户等待它查看页面.这是一个应该用于提高性能的想法,因为如果您使用网络测功机发送 10 封电子邮件,那是他们不响应用户请求的时候,所以您无法处理这么多用户。

任务必须排队,工作人员应检查该队列以完成该工作!

所以你的工作人员崩溃是因为你没有定义任何工作,所以他可以等待该工作的队列。检查此 gem 以获取有关如何设置作业和队列任务的信息。

https://github.com/defunkt/resque

workers 可以用来安排一些任务,比如 cron 作业。这里有一个 gem 可以帮助你。

https://github.com/javan/whenever

我强烈建议您也观看 RailsCasts 上的视频

http://railscasts.com/episodes/171-delayed-job

http://railscasts.com/episodes/271-resque

关于ruby-on-rails-3 - Heroku dyno/worker 在开始时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9659907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com