使用Gunicorn的猎鹰应用程序在Heroku摊位

时间:2016-02-07 02:18:03

标签: python heroku gunicorn falconframework

我正在尝试使用gunicorn为Heroku提供猎鹰应用程序。

我几乎遵循了猎鹰文档并创建了一个基本的应用程序。

我正在使用psycopg2在处理请求时为每个资源添加一个连接游标。

web: gunicorn app:api --log-level=DEBUG --worker-class=gevent

但是现在每个请求都会导致超时:

Feb 06 18:10:01 d.19db00e4-faf8-47bc-aaea-c78a52163a24 heroku/router:  at=error code=H12 desc="Request timeout" method=GET path="/" host=falcon-raptor-api.herokuapp.com request_id=3b29350f-8990-430c-92e8-02458d91a2f9 fwd="54.91.242.125" dyno=web.1 connect=1ms service=30001ms status=503 bytes=0 

我认为这是psycopg2或gunicorn或两者的问题。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

我有一个类似的问题,在Heroku上使用Gunicorn部署猎鹰API。我的问题是我没有使用Gunicorn的bind参数,所以没有套接字可以听。 Heroku使用动态端口号,因此最好只使用$PORT var。在Procfile中尝试这样的事情:

web: gunicorn -b 0.0.0.0:$PORT app:api --log-level=DEBUG --worker-class=gevent

答案 1 :(得分:0)

这听起来像是在gevent greenthead内部进行阻止调用。确保在申请期间尽早手动修补或修补相关网络库(套接字,psycopg2等)。

请参阅Using gevent monkey patching with threading makes thread work serially

答案 2 :(得分:0)

我在Heroku中使用Falcon。

在proc文件中使用以下

web: gunicorn api:app --log-level=DEBUG --worker-class=gevent

我假设您想要运行" api.py"在Heroku中使用Gunicorn的文件。

我希望这能解决你的问题。