首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Predix聚合物前端倾向于与瓶Python服务器通信?

Predix聚合物前端倾向于与瓶Python服务器通信?
EN

Stack Overflow用户
提问于 2018-05-02 12:33:35
回答 2查看 318关注 0票数 1

我正试图将一个包含2个应用程序的程序推送给Cloudfoundry --一个运行Python的烧瓶服务器和一个用于前端的聚合物应用程序。目前,我使用的结构如下:

manifest.yml

代码语言:javascript
复制
---
applications:
  - name: flask_min
    path: ./flask_min
    buildpack: https://github.com/cloudfoundry/python-buildpack 
    memory: 512M
  - name: pacing_app
    memory: 512M
    buildpack: nodejs_buildpack
    command: node server/app.js
    path: ./pacing_app/build/es5-basic

然后在文件夹./flask_min中,我有一个Procfile

代码语言:javascript
复制
web: python3 app.py

app.py有一个Flask服务器(加上用于本地测试的CORS装饰师,为了简洁起见,我在这里省略了该服务器):

代码语言:javascript
复制
app = Flask(__name__)

port = int(os.getenv("PORT", 7733))

@app.route('/hello', methods=['GET', 'OPTIONS'])
@crossdomain(origin='*')
def hello():
    return "Hello"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=port)

我可以cf push它,并显示实例运行。然而,当我访问flask_min应用程序的url时,我没有得到它应该打印的"Hello“,我得到了一个HTTP ERROR 503

至于pacing_app,我使用的是Predix启动器,只是删除了seed-app.html中的元素,并将其替换为API调用:

代码语言:javascript
复制
<template>
  <iron-ajax url="http://localhost:7733/hello" handle-as="text" last-response="{{data}}" auto></iron-ajax>        
    <p>{{data}}</p>
</template>

在当地,这是可行的,然而,在“附录”上却并非如此。第一个问题是:我如何链接到Flask,一旦它出现在预告片上?

此外,即使整个事情是在当地工作,聚合物前端也不会加载时,在Predix。我也得到

加载资源失败:服务器响应时状态为503 (服务不可用)

尽管cf push看起来很成功,但当我在pacing-app文件夹中执行gulp并在本地“手动”运行您的python服务器时,也会在本地运行。

你知道我做错了什么吗?我如何使用使用同样运行在Predix上的Python来建立一个带有Predix组件的聚合物前端?

我不打算使用两个单独的应用程序,只是不知道如何使用一个应用程序。由于性能原因,我更希望在NodeJS服务器上运行高分子应用程序,而不是从SKLearn服务器为其提供服务,而Python/Flask服务器非常重要,因为我打算在后台运行一些SKLearn代码。

EN

回答 2

Stack Overflow用户

发布于 2018-05-03 21:45:07

我有两种选择给你。

  1. 使用NodeJS作为您的前端服务器的starter。使用单独的Python微服务作为后端服务器。这种方法可能会更好,特别是如果后端SKLearn进程需要很长时间。
  2. 在一个Python/Flask服务器中运行所有的东西。您可以将精密数字火山应用程序作为一个示例。如果您有更多的Python经验,这种方法可能会更容易一些。
票数 0
EN

Stack Overflow用户

发布于 2019-04-26 13:29:27

聚合物和烧瓶的组合需要一些“调整”,使烧瓶服务器服务正确的聚合物文件夹。从简单的烧瓶服务器开始,如下所示:

代码语言:javascript
复制
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return app.send_static_file('index.html')

@app.route('/<path:the_path>')
def all_other_routes(the_path):
    return app.send_static_file(the_path)

if __name__ == '__main__':
    app.run(debug=True)

通过在一个新文件夹中使用聚合物启动工具包:

代码语言:javascript
复制
mkdir polymer && cd polymer && polymer init polymer-3-starter-kit && polymer build && cd ..

然后,要么更改默认的烧瓶服务文件夹(静态),要么您可以简单地创建一个符号链接到您的聚合物构建文件夹。我更喜欢执行第二个操作,方法是在根目录(与服务器文件一起)上发出以下命令:

代码语言:javascript
复制
ln -s ./polymer/build/es6-bundled ./static
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50134780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档