【问题标题】:Appengine: "URLFetch is not available in this environment."Appengine:“URLFetch 在此环境中不可用。”
【发布时间】:2019-01-26 12:45:50
【问题描述】:

我用 Python 构建了一个由 Node 应用程序获取的应用引擎 API。 API 按预期工作,用于 (1) 在生产中获取和发布请求,以及 (2) 在开发中获取请求。它在开发中的发布请求失败,我可以使用一些帮助找出原因。

错误信息

在我的节点环境中,我看到了错误:

请求中没有“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:4444” 使用权。响应的 HTTP 状态代码为 500。如果响应不透明 满足您的需求,将请求的模式设置为“no-cors”以获取 禁用 CORS 的资源。

但是我已经在我的应用程序中使用了 flask_cors 包,所以我想知道这是否真的是一个 CORS 问题。

我激活的虚拟python环境日志:

文件 "/myproject/googleAdsApi/env/lib/python2.7/site-packages/urllib3/contrib/appengine.py", 第 103 行,在 init 中 "URLFetch 在此环境中不可用。")

所以也许我应该在我的虚拟环境中使用 URLFetch 的替代方法?

我目前的实现

获取:

fetch('http://localhost:8080/api/get_accounts', {
    method: "POST",
    mode: "cors", 
    cache: "no-cache", 
    credentials: "same-origin", 
    headers: {
        "Content-Type": "application/json; charset=utf-8",
    },
    redirect: "follow", 
    referrer: "no-referrer", 
    body: JSON.stringify(credentials)
})
.then(response => response.json())
.then(result => console.log(result));

flask_cors:

app = Flask(__name__)
cors = CORS(app, resources={r"/api/*": {"origins": "*"}})

【问题讨论】:

  • dev env 是指运行本地 virtualenv 还是使用 GAE dev_appserver.py ?
  • 仅运行本地虚拟环境。但我会给 dev_appserver.py 一个机会。错过了文档的那一部分。
  • 一定要使用 dev_appserver.py 来运行 dev。 GAE 有许多难以在本地虚拟环境中手动复制的特性。此外,您还可以获得许多有用的监控工具(任务队列、Memcache、存储等)
  • 是的,它可以像那样工作。谢谢你指点我:)
  • 我以后会移动评论作为其他人的答案。

标签: python google-app-engine virtualenv


【解决方案1】:

始终使用 dev_appserver.py 在 GAE 应用程序上运行本地开发环境。 GAE 有许多难以在本地 virtualenv 上手动重现的特性。此外,您还可以获得很多有用的工具来监控各种服务(任务队列、Memcache、存储等)。 dev_appserver.py 还会自动加载许多 GAE 原生 api 供您使用,而且它们通常有自己的流行库版本,适用于无服务器环境(URLFetch 就是其中之一)

官方文档 https://cloud.google.com/appengine/docs/standard/python/tools/using-local-server

【讨论】:

    猜你喜欢
    • 2019-03-16
    • 2015-10-13
    • 2014-12-04
    • 2015-05-06
    • 2012-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多