我已经在 aiohttp 上构建了一个简单的Web服务器,并尝试将其部署在 heroku 上,但是在部署后,我收到一条错误消息:
at =错误代码= H14 desc =“没有Web进程正在运行” dyno = connect = service = status = 503字节= protocol = https
项目结构:
├── application.py
├── Procfile
├── requirements.txt
├── routes.py
└── views
├── bot_team_oranizer.py
├── index.py
└── __init__.py
application.py
from aiohttp import web
from routes import setup_routes
app = web.Application()
setup_routes(app)
web.run_app(app)
Procfile :
web: gunicorn application:app
为什么Web服务器不能在heroku上启动?
答案 0 :(得分:2)
可能aiohttp没有在正确的端口上监听。您需要类似web.run_app(app, port=os.getenv('PORT'))
的东西。
更新:等等,您正在尝试同时使用Gunicorn和错误的web.run_app
来提供服务,您只需要添加web: python application.py
之类的东西或删除web.run_app(app)
。
答案 1 :(得分:0)
如果您在myapp.py
中有这样的应用,
import os
from aiohttp import web
#...define routes...
async def create_app():
app = web.Application()
app.add_routes(routes)
return app
# If running directly https://docs.aiohttp.org/en/stable/web_quickstart.html
if __name__ == "__main__":
port = int(os.environ.get('PORT', 8000))
web.run_app(create_app(), port=port)
您既可以通过python
CLI在本地运行它,也可以将其作为由gunicorn
管理的工作进程,并使用Procfile
类似于以下内容:
# use if you wish to run your server directly instead of via an application runner
#web: python myapp.py
# see https://docs.aiohttp.org/en/stable/deployment.html#nginx-gunicorn
# https://devcenter.heroku.om/articles/python-gunicorn
# http://docs.gunicorn.org/en/latest/run.html
web: gunicorn --bind 0.0.0.0:$PORT -k aiohttp.worker.GunicornWebWorker myapp:create_app