我正在尝试使用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或两者的问题。
有什么建议吗?
答案 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的文件。
我希望这能解决你的问题。