首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python请求返回502网关错误

Python请求返回502网关错误
EN

Stack Overflow用户
提问于 2021-08-27 10:40:15
回答 1查看 328关注 0票数 0

我正在开发一个python应用程序,它将加密的数据包发送到远程python服务器。所有代码都可以在我的本地开发机器上运行,但在生产服务器上,请求返回一个错误的网关错误(502)。远程服务器使用的是带有nginx的python 2.7。源服务器使用Python 3和Apache。如果我将我的dev版本指向同一个远程源,我也会得到一个502错误,所以这似乎是远程机器上的一个问题(因为我的本地遥控器工作正常)

下面是我的本地代码的相关部分的示例。

代码语言:javascript
运行
复制
# 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和人员数据)被加密并发送到远程服务器。

来自远程服务器的相关代码是:

代码语言:javascript
运行
复制
#!/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")

正如我所说的,这在本地工作,但是无论我是从我的dev本地源调用,还是使用生产源调用,远程调用都会失败。

不会向apache或nginx日志报告任何内容。但是,当我在任一来源上手动运行python3 main.py命令时,我确实得到了以下结果:

代码语言:javascript
运行
复制
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/

此服务器上的其他路由可以通过浏览器到达,因此服务器在那里。所有加密密钥都是相同的。

有什么想法吗?

谢谢

* EDIT *我最终放弃了这种方法,转而使用ssh/sftp发送数据的转储文件。

EN

回答 1

Stack Overflow用户

发布于 2021-09-01 14:34:20

我放弃了整个加密思想,使用paramiko通过sftp将数据作为文件传输。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68952032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档