【问题标题】:Flask requests not working when application is deployed部署应用程序时烧瓶请求不起作用
【发布时间】:2019-10-16 18:42:27
【问题描述】:

我在 IIS 上的 Windows Server 2016 中部署了一个烧瓶应用程序。一切正常,然后我更新了窗口,现在部署时我无法使用 requests.get()

这是一个简单的代码:

from flask import Flask
from flask_cors import CORS
from flask import request

import requests


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



@app.route("/")
def hello():
    r = requests.get('http://google.com')
    return r.text


if __name__ == "__main__":
    print ("\nAttempting to start server ...")
    app.run(threaded = True, port=5052)

当我运行它时,它的浏览器会挂起 30s 左右,然后返回一个 500 错误。

服务器可以访问互联网:我可以浏览、使用 pip,甚至可以从 python 命令行或作为独立程序执行请求,但在部署时不能。

我尝试了 headers、cors,几乎使用了所有可能的设置。我不知道为什么它不再起作用了。

【问题讨论】:

  • 请提供控制台输出。您是否收到“正在尝试启动服务器”这个打印?另外请打开调试并在此处发布输出以便更好地理解。
  • flask 应用程序使用 wfastcgi 并部署时,这部分代码不会执行。所以你可以忽略“主要”部分。
  • 不管是python、php还是其他语言。除了 python 中的请求和 curl 中的请求或 php 中的 get_file_contents 之外,所有应用程序都有效。如果我直接从服务器的浏览器(javascript 或 i 地址栏)调用 Web 服务,它可以工作,但不能从 localhost 或 IIS 调用。看起来 IIS 几乎阻止了这些类型的操作。

标签: python iis flask python-requests windows-server-2016


【解决方案1】:

你能把你的协议改成 https..它对我来说很好用..:) 我也花了将近一个小时来尝试所有的可能性。 对不起,这很简单:) 有趣的是,这是我关于堆栈溢出的第一个解决方案..

【讨论】:

  • 不走运。 IIS 不断阻止与外部 Web 服务(例如 google maps api)、文件下载等的任何类型的连接。
  • 问题已解决。似乎系统管理员做了一些事情,但什么也没说。究竟是什么,我不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多