在Heroku上部署Taipy会导致Web进程在启动后60秒内无法绑定到$PORT

apeeds0o  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(129)

我正在使用Taipy,我需要在Heroku上部署我的应用程序。我一直收到错误“Web进程在启动后60秒内无法绑定到$PORT”。下面是日志文件的图像。x1c 0d1x
我的Procfile

web: python main.py --host=0.0.0.0
echo ${GOOGLE_CREDENTIALS} > /app/google-credentials.json

字符串
我已经包含了main.py脚本。脚本的最后一行包含rn函数,该函数用于在默认端口5000上运行taipy服务器。我不知道如何调整run()函数以接受heroku默认端口。编辑:main.py

. . .

if __name__ == "__main__":
    Core().run()
    scenario = tp.create_scenario(scenario_cfg)
    scenario_search = tp.create_scenario(text_search_scenario_cfg)
    scenario_search_image = tp.create_scenario(image_search_scenario_cfg)
    Gui(pages = pages).run()

byqmnocz

byqmnocz1#

如果你想在Heroku上处理Web请求,你的服务需要在正确的端口上侦听。这在运行时通过PORT环境变量提供:
在Heroku上,应用程序是完全独立的,不依赖于运行时将Web服务器注入执行环境来创建面向Web的服务。每个Web进程只需绑定到一个端口,并侦听来自该端口的请求。要绑定的端口由Heroku分配为PORT环境变量。
这可以在main.py中完成,但最简单的解决方案可能是将--port选项添加到Procfile中的web进程:

web: python main.py --host=0.0.0.0 --port=$PORT

字符串
请注意,Procfile中的第二行不会做任何事情。Procfile不是脚本,因此您不能运行任意命令。它们是define process types
如果你可以通过其他方式设置你的证书(例如直接从环境变量读取它们,而不是将变量转储到文件中然后阅读文件),我建议你这样做。如果你真的需要这个文件存在,你可能需要考虑编写一个 Package 器shell脚本来创建文件并启动应用程序。

相关问题