坏的文件描述符 - Heroku Foreman

8
我正在尝试运行这个Python Heroku教程中的hello.py。在运行foreman start命令后,我的问题开始了。即使我已经安装了Heroku Toolbelt,我仍然收到以下错误消息:

foreman不被识别为内部或外部命令、可执行程序或批处理文件。

因此,我将foreman文件(版本0.63.0)的位置添加到了我的path中:

C:\Program Files (x86)\Heroku\ruby-1.9.2\bin

并重新启动了命令提示符并重新运行foreman start。现在,我收到以下错误消息:

Microsoft Windows [Version 6.2.9200]
(c) 2012 Microsoft Corporation. All rights reserved.

C:\Users\me\Desktop\Code\heroku_python_app>venv\Scripts\activate
(venv) C:\Users\me\Desktop\Code\heroku_python_app>foreman start
Bad file descriptor
C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/foreman-0.63.0
/lib/foreman/engine.rb:372:in `read_nonblock'
C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/foreman-0.63.0
/lib/foreman/engine.rb:372:in `block (2 levels) in watch_for_output'
C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/foreman-0.63.0
/lib/foreman/engine.rb:368:in `loop'
C:/Program Files (x86)/Heroku/ruby-1.9.2/lib/ruby/gems/1.9.1/gems/foreman-0.63.0
/lib/foreman/engine.rb:368:in `block in watch_for_output'
12:57:38 web.1  | exited with code 1
12:57:38 system | sending SIGKILL to all processes

(venv) C:\Users\me\Desktop\Code\heroku_python_app>

hello.py

import os
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World'

Procfile

web: gunicorn hello:app

编辑 1

阅读了this answer之后,我进行了如下操作:

gem uninstall foreman   
gem install foreman -v 0.61.0

然而,当我重新运行foreman start时,现在出现了这个错误。
(venv) C:\Users\me\Desktop\Code\heroku_python_app>foreman start
14:13:20 web.1  | started with pid 252
14:13:20 web.1  | exited with code 1
14:13:20 system | sending SIGKILL to all processes
14:13:20        | Traceback (most recent call last):
14:13:20        |   File "C:\Users\me\Desktop\Code\heroku_python_app\venv\Scri
pts\gunicorn-script.py", line 9, in <module>

(venv) C:\Users\me\Desktop\Code\heroku_python_app>

任何帮助都将不胜感激。提前致谢。

1
你能否在不使用Foreman的情况下从你的Procfile运行web命令? - georgebrock
1
你的 Procfile 应该包含一行类似于 web: something 的内容,只需在命令行中键入 something 部分并查看发生了什么。 - georgebrock
1
你找到解决方案了吗?我也有完全相同的问题。 - RexE
2
+1 @RexE 从我的理解来看,这个问题是由于Gunicorn不支持Windows(我使用的是Windows XP)所致,请参见他们的网站(http://gunicorn.org/)。然而,我将尝试在Linux CentOS上再次尝试,并向您报告。另外,我还尝试在虚拟机中运行Ubuntu,但我的系统速度太慢了,无法正常工作。因此,我在我的机器上进行了双重引导,并将很快重新尝试。另一种选择是创建一个Amazon EC2实例,并选择其中一个Linux AMI,在那里尝试它。 - Anthony
1
我搞定了!我相信是在创建SSH密钥之后它开始工作了。 - RexE
显示剩余5条评论
1个回答

6

我通过运行以下命令解决了这个问题:

gem uninstall foreman
gem install foreman -v 0.61.0 [EDIT]

此处所述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接