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

标签 python node.js rest heroku

我有一个名为 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/

相关文章:

javascript - YouTube 登录页面上的 javascript 如何发送表单数据?

node.js - Node mongodb : Error: connection closed due to parseError

node.js - 在 Nest.JS 中将服务注入(inject)到守卫中

node.js - 使用 ubuntu upstart 启动时,node js multer 文件上传不起作用

java - 在 Xpages 中。如何将值从 serviceBean(由 extlib REST 服务调用)传递回 Notes 文档

python - 给 celery 守护进程加花?

python - 如何将图形从 IPython Notebook 导出到文件

rest - API GET 方法 : Unsupported Protocol

java - Apache Shiro authc.loginUrl 登录后没有重定向到我的 Jersey 服务

Python Pandas 在 groupby 和聚合之后排序