CentOS7阿里云服务器,python程序requests无法正常post网站(报502)


问题描述:

    使用jenkins构建接口自动化测试时,发现新增加的接口case不能访问通,会报502错误(本地可以跑通,在测试服就会502)
解决的思路:
 缩小调试范围(去掉jenkins db环境,将问题集中在一个测试脚本中,删减多余代码,只用十几行代码表现问题 )
定位到问题:
  centos测试服执行接口测试访问的ip 43.243.234.239
本地执行接口测试访问的ip 10.2.2.127
问题解决:
  centos测试服配置host


具体解决过程:

问题描述:
本地是ubuntu系统
服务器是centos系统

使用jenkins构建接口自动化测试时,发现新增加的接口case不能访问通,会报502错误

尝试解决问题
因当数据存储在db,所以调试case时等待的时间,和调试的代码范围很大(代码很多,看着头疼,也不易定位问题),所以减少调试代码
做了如下的demo
缩小调试范围(去掉jenkins db环境,将问题集中在一个测试脚本中,删减多余代码,只用十几行代码表现问题 )

同一个demo分别在本地和centos服务器上运行,结果:

import requests

url1 = "http://overseas-appapi-test.xxxx.com/site/index"
data1 = {"language": "en-us"}

res = requests.get(url1,data1)
print(res.url)
print(res.status_code)
print(res.text)

在本地执行demo,请求通过

在服务器执行demo,报502


疑惑ing
因我本地是ubuntu,服务器是centos,所以怀疑难道不同的linux操作系统会对python requests请求造成影响吗?(啊,太小白了,居然会这样想,不过这也说明我对网络,操作系统还需要有很多要了解的知识)

在网上搜索centos7 执行python requests失败,居然真的找到了和我情况相似的人
就是这位楼主了
https://bbs.csdn.net/topics/392505040

楼主是这样说的
结帖了,应该是对方的网站禁用了阿里云的IP,我使用代理进行get之后成功了。

而我查看http返回的状态码,502表示网关错误,是服务器那边处理有问题,心中有这样的疑惑了,我就问了一下我们的项目负责人
负责人教我用如下的方法分析问题

1.在centOS服务器ping测试的域名,查看ip地址

1 ping overseas-appapi-test.5i5j.com

这里可以看到ip地址是43.243.234.239 这是阿里云的服务器地址 

2.在本地ping测试的域名,查看ip地址

1.在centOS服务器ping测试的域名,查看ip地址

这里可以看到ip地址是10.2.2.127 这是内网地址 

 

 到这里,我就明白了,原来问题出在ip地址这里

项目负责人是这样帮我分析的

所以现在配置hosts地址就可以了

解决办法:

(automationVenv) [root@67 automationtest]# nano /etc/hosts

  

再测试一下

可以正常访问了

参考

问题分析与定位:

:https://bbs.csdn.net/topics/392505040

centos7配置hosts并使其生效 

https://www.cnblogs.com/hujichen/p/5414785.html

 不过现在心里还是有个疑问:

1.为什么内网访问不通时会去访问阿里云?

2.centOS测试服访问阿里云到阿里云返回502错误,这中间都发生了什么?

这两个问题是我现在还不能理解的 

计算机的知识体系很pang 大,编程只是其中之一,如果真的想做好测试,操作系统,网络知识都是非常重要的

原文地址:https://www.cnblogs.com/kaerxifa/p/10984773.html