4

我正试图从工头开始 faye。我的 procfile 看起来像这样:

web: bundle exec rails server thin -p $PORT -e $RACK_ENV
worker: bundle exec sidekiq
redis: bundle exec redis-server
faye: bundle exec rackup faye.ru -s thin -E production

当我跑bundle exec foreman start

web、worker 和 redis 服务器都正确启动,但 faye 服务器不正确。

在控制台中我得到:10:53:56 faye.1 | started with pid 10907

然后faye就没有更多了。

如果我使用 procfile: 中的命令运行 faye 服务器bundle exec rackup faye.ru -s thin -E production,faye 将正确启动。我究竟做错了什么?

4

3 回答 3

2

当您在本地运行时:

bundle exec rackup faye.ru -s thin -E production

rackup将使用它的默认端口,即 9292。

当它在 Herkou 上运行时,如果该端口已在使用中,它可能无法启动。$PORT据我所知,Heroku 动态地将变量分配给一个有效的空闲端口。

我的猜测是,Faye 要么从不同的端口开始,要么根本没有开始。

于 2013-03-22T16:38:56.190 回答
0

看起来 faye 运行良好。尝试访问http://localhost:{PORT}/faye.js以查看它是否有响应。它应该与 JS 一起返回。确保调用faye服务器时使用正确的端口。一旦您开始提出请求,您应该会看到工头正在吐出 faye 日志。

于 2013-03-22T12:38:37.153 回答
0

这是工头缺少输出的问题。

如果您没有看到程序的任何输出,则很可能它正在缓冲stdout。许多语言,例如 Ruby 和 Pythonstdout默认缓冲区。

Faye 没有设置$stdout.sync = true,因此它的输出丢失。

我前段时间遇到过同样的问题并试图解决它,但我的拉取请求被拒绝了。

于 2013-03-22T17:29:21.400 回答