无法从 py 脚本向 ECS 上的 Flask 发送请求,但从邮递员可以发送请求

问题描述 投票:0回答:1

我在 ECS 之上有 Flask,尝试使用 Python requests \

http.client
发送
req
(来自本地脚本),但它没有到达 ECS(在中看不到它)日志),但是当尝试使用
Postman
(网络和本地)时,它会成功。

有什么想法吗?

烧瓶:

app = flask.Flask(__name__)

@app.route("/infr", methods=["POST"])
def transformation():
 doing something

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

Python脚本1

def exec_task(task, out):
        import http.client
        import json

        url = "<ecs-public-ip>"
        port = 8080
        endpoint = "/infr"

        conn = http.client.HTTPConnection(url, port)
        headers = {"Content-Type": "application/json", "Connection": "keep-alive"}

        data = {
            "task": {
                "bucket": task.bucket,
                "prefix": task.prefix,
                "metadata": task.metadata
            }
        }

        payload = json.dumps(data)

        conn.request("POST", endpoint, body=payload, headers=headers)
        response = conn.getresponse()

        if response.status == 200:
            print("\nRequest successful")
            response_data = json.loads(response.read().decode())
            out.put(ProcessedTask(bucket=task.bucket, prefix=task.prefix, metadata=response_data))
        else:
            print("\nRequest failed")

        conn.close()

Python脚本2

def exec_task(task, out):
        import requests

        url = "http://<ecs-public-ip>:8080/infr"
        data = {"task": {
            "bucket": task.bucket,
            "prefix": task.prefix,
            "metadata": task.metadata
        }}
        
        print("sending: " + str(data))
        headers = {"Content-Type": "application/json", "Connection": "keep-alive"}
        response = requests.post(url, json=data, headers=headers)

        if response.status_code == 200:
            print("\nRequest successful")
            response_data = response.json()
            out.put({ProcessedTask(bucket=task.bucket, prefix=task.prefix, metadata=response_data)})
        else:
            print("\nRequest failed")

邮差

  • 注意:使用端口8080。误删除了
python amazon-web-services flask postman amazon-ecs
1个回答
0
投票

发现问题了。由于某种原因引发了异常,stdout 和 vscode debug 都没有捕获它,所以它只是结束了程序。

© www.soinside.com 2019 - 2024. All rights reserved.