我正试图将一个包含2个应用程序的程序推送给Cloudfoundry --一个运行Python的烧瓶服务器和一个用于前端的聚合物应用程序。目前,我使用的结构如下:
manifest.yml
---
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
web: python3 app.pyapp.py有一个Flask服务器(加上用于本地测试的CORS装饰师,为了简洁起见,我在这里省略了该服务器):
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调用:
<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代码。
发布于 2018-05-03 21:45:07
我有两种选择给你。
发布于 2019-04-26 13:29:27
聚合物和烧瓶的组合需要一些“调整”,使烧瓶服务器服务正确的聚合物文件夹。从简单的烧瓶服务器开始,如下所示:
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)通过在一个新文件夹中使用聚合物启动工具包:
mkdir polymer && cd polymer && polymer init polymer-3-starter-kit && polymer build && cd ..然后,要么更改默认的烧瓶服务文件夹(静态),要么您可以简单地创建一个符号链接到您的聚合物构建文件夹。我更喜欢执行第二个操作,方法是在根目录(与服务器文件一起)上发出以下命令:
ln -s ./polymer/build/es6-bundled ./statichttps://stackoverflow.com/questions/50134780
复制相似问题