我的GAE项目有以下目录结构:
init.py
__初始化__。PY
所以为了访问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
有关于此的任何建议吗?提前谢谢!
答案 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 的答案,因为它帮助了我很多