我继承了一个包含NodeJS部分和Python部分的存储库。项目结构是NodeJS位于存储库的根目录,而Python部分位于Python文件夹中:
root
|- app
|- some.js
|- files.js
|- Python
|- other.py
|- files.py
我已经设置了一个Heroku dyno来同时服务于Python服务器和NodeJS服务器,方法是在我的Procfile中(基于this older article松散地):
web: npm start
python: sh -c 'cd ./Python/ && export PYTHONPATH=. && python other.py'
python项目设置为使用端口2001.它是Bottle应用程序,在启动服务器时,我传入此端口(取自Heroku设置)。
在我的日志记录中,我可以看到两者都已成功启动。简化为:
Bottle v0.12.13 server starting up (using WaitressServer())...
Listening on http://localhost:2001/
Server running at: http://<guid>:7667
当我请求我的应用程序的根目录时,我收到了NodeJS服务器的回复。但是,对于某些路由,我想调用Python部分。我通过使用Node http在本地成功完成了此操作。但是,在Heroku上执行此操作时,我收到以下错误:
connect ECONNREFUSED 127.0.0.1:2001
当我在Heroku本地运行此项目时(通过CLI工具heroku local
),它完美地运行。关于如何让它发挥作用的任何想法?
答案 0 :(得分:1)
所以我改变了我的Procfile只运行一个dyno:
web: npm start & sh -c 'cd ./Python/ && export PYTHONPATH=. && python other.py'
现在我可以毫无问题地致电127.0.0.1:2001
。