gpt4 book ai didi

python - 如何让 Node Web 客户端与 Heroku 上的 REST API 对话?

转载 作者:太空宇宙 更新时间:2023-11-03 17:22:43 24 4
gpt4 key购买 nike

我有一个名为 bidsell 的 Node Web 客户端,以及一个名为 quote 的小型 Python Tornado REST API。 Bidsell 触发时会定期调用 http get 来报价。 Quote 适本地以 json 形式返回随机价格信息。在本地工作 - 想在线分享,但如何分享? Heroku 看起来很有前途。已经尝试在heroku上的同一个项目中部署bidsell和quote,每个项目都在自己的heroku web dyno或部署容器中运行。从日志“heroku log”来看,两者均已正确安装,但只有一个似乎正在运行。例如,我可以访问 bidsell 的首页 url,但是当触发 bidsell 去获取报价信息时,找不到报价服务:-( 我应该使用其他部署模式吗?

最佳答案

好的,按照 jr0cket 的建议,我创建了 2 个 heroku 项目 - 一个用于 bidsell Node 项目,另一个用于报价服务。

除了 bidsell Node 项目源文件之外,我还有一个包含以下内容的 procfile:

web: npm start

package.json 中的脚本部分通知 heroku 如何启动应用程序:

 "scripts": {
"start": "gulp serve"
}

除了 quoteService 源 python 文件之外,我还有一个包含以下内容的 procfile:

web: python quoteService.py

和一个requirements.txt文件,其中包含:

tornado==3.1.1
pyrestful==0.4.1

有以下 proxy.js 作为 bidsell 应用程序中的中间件:

'use strict';

var proxyMiddleware = require('http-proxy-middleware');

var options = {
target: 'http://quoteservce.herokuapp.com:80',
changeOrigin: true
};

var proxy = proxyMiddleware('/quote', options);

module.exports = function(){
return [proxy];
}

从 server.js 调用:

'use strict';

..

var middleware = require('./proxy');

module.exports = function(options) {

function browserSyncInit(baseDir, browser) {
browser = browser === undefined ? 'default' : browser;

..

var server = {
baseDir: baseDir,
routes: routes
};

server.middleware = middleware();

browserSync.instance = browserSync.init({
port: (process.env.PORT || 5000),
startPath: '/',
server: server,
browser: browser
});
}

..

gulp.task('serve', ['watch'], function () {
browserSyncInit([options.tmp + '/serve', options.src]);
});

..

};

允许 bidsell 和 quoteService 之间进行通信。有关更多背景信息,请查看 here

您可以找到正在运行的应用程序 here .

可能需要一段时间才能启动空闲的免费 Heroku dynos ;-)

Bidsell project on gitQuoteService project on git .

关于python - 如何让 Node Web 客户端与 Heroku 上的 REST API 对话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32964855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com