烧瓶路线不适用于gae应用

时间:2018-04-05 19:45:40

标签: python-2.7 google-app-engine flask

我的GAE项目有以下目录结构:

  • 端点/
    • 见解/
      • insights.py
      • init.py

  • LIB /
    • __初始化__。PY

  • insights.yaml

所以为了访问lib文件夹中的第三个库,我在__init__.py文件中添加了下一个代码。

import os
import sys


def add_lib_path():
    lib_directory = os.path.dirname(os.path.abspath(__file__))
    if lib_directory not in sys.path:
       sys.path.insert(0, lib_directory)

我在import语句之前在insights.py文件中添加了这段代码:

from lib import add_lib_path
add_lib_path()
问题是现在我可以正确导入第三个库,但我的@app.route('/something', methods=['POST'])无效。

我发送了一个帖子请求,它返回状态200,但它没有进入我的@ app.route代码,我实际上可以发送任何路由,它只传递返回200但不是数据而不是错误。

我的导入如下:

from lib import add_lib_path
add_lib_path()
from flask import Flask, request

我的代码@ app.route('/ something',methods = ['POST'])看起来像这样:

def someDef():
    some code ...

    return response

我的yaml文件如下所示:

runtime: python27
api_version: 1
threadsafe: false
service: insights

handlers:
- url: /.*
  script: endpoints/insights/insights.py

libraries:
- name: ssl
  version: latest

有关于此的任何建议吗?提前谢谢!

2 个答案:

答案 0 :(得分:0)

app.yaml中的通配符网址处理程序正在截取/something帖子:

handlers: 
- url: /.* 
  script: application.app

您需要在应用中制作单个网址,或为insights设置唯一的网址,例如/insights/.*中的app.yaml。无论哪种方式,如果您想要提供特殊待遇的其他网址,例如发送到单独的服务,您就无法在app.yaml中拥有一个全能网址处理程序。

答案 1 :(得分:0)

好吧我刚刚在app.yaml文件中更改了threadsafe to true,然后我使用Python模块路径添加了这个endpoints.insights.insights.app这样的脚本(点不是斜杠 )在我的insights.py文件中,我将@app.route('/something', methods=['POST'])更改为@app.route('/insights/something', methods=['POST']) ..我添加了我在app.yaml文件中定义的完整网址,现在它正在运行。

感谢@GAEfan的帮助,我会接受 GAEfan 的答案,因为它帮助了我很多