python - Python 请求返回 502 网关错误
问题描述
我正在开发一个 python 应用程序,它将加密的数据包发送到远程 python 服务器。所有代码都可以在我的本地开发机器上运行,但在生产服务器上,请求会返回错误的网关错误 (502)。远程服务器使用带有 nginx 的 python 2.7。源服务器使用 Python 3 和 Apache。如果我将我的开发版本指向同一个远程源,我也会收到 502 错误,所以这似乎是远程盒子上的一个问题(因为我的本地遥控器按预期工作)
这是我的本地代码相关部分的示例。
# Encrypt the data and send it
enc = Fernet(config["Encryption"]["key"].encode('utf-8'))
members = json.dumps(members, indent=2).encode()
members = enc.encrypt(members)
data = {"data": members}
response = requests.post("https://sites.url/update/", data=data, verify=True)
response.raise_for_status()
print(response.status_code)
此时,有效载荷(只是 id 和人员数据)被加密并发送到远程服务器。
来自远程服务器的相关代码是:
#!/usr/bin/env python3
import configparser
import time
import math
from flask import Flask, request, abort, render_template
from flask_mysqldb import MySQL
from cryptography.fernet import Fernet
from MySQLdb.cursors import DictCursor
import mysql.connector
from bs4 import BeautifulSoup
from flask import jsonify
... Other routes etc ...
@app.route("/update/", methods=["POST"])
def update():
enc = Fernet(app.config["ENC_KEY"])
data = enc.decrypt(request.form["data"].encode("UTF-8"))
with open("opt/path/members.json", "w") as fp:
fp.write(data.decode("UTF-8"))
return ("OK")
正如我所说,这是在本地工作,但无论我是从我的开发本地源调用还是使用生产源调用,远程调用都会失败。
apache 或 nginx 日志均未报告任何内容。但是,当我在任一源上手动运行 python3 main.py 命令时,我确实得到以下信息:
Traceback (most recent call last):
File "/var/www/path/member-export/main.py", line 121, in <module>
response.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 935, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 502 Server Error: Bad Gateway for url: https://site.url/update/
可以使用浏览器访问此服务器上的其他路由,因此服务器就在那里。所有加密密钥都相同。
有任何想法吗?
谢谢
*** 编辑 *** 我最终放弃了这种方法,而是使用 ssh/sftp 发送数据的转储文件。
解决方案
我放弃了整个加密的想法,使用 paramiko 通过 sftp 将数据作为文件传输。
推荐阅读
- javascript - 无需访问密钥的 AWS S3 JavaScript 浏览器上传
- apache-kafka - kafka connect http sink的死信队列
- node.js - 安装 npm install -g @angular/Cli 时出错
- django - 如何解决在 django 中不显示站点地图的问题?
- python - 基于输入的Python折扣函数
- java - 如何从参数中的文件加载数据并将其作为 Java 中的 List 返回?
- python - 在 django 模板中显示多个列表
- java - Spring JdbcTemplate 调用 SQLserver 存储过程时速度极慢
- java - 如何将 Gson 值放入 HashMap
- c# - 如何在无尽的跑步游戏中实现得分组合系统