AI测试 djang 调用 requests 困惑

尹全旺 · 2017年12月26日 · 最后由 尹全旺 回复于 2017年12月27日 · 2063 次阅读

最近开发 api 平台时,遇到这样一个奇葩问题,在 django 的 view 视图里调用 requests 库发送 post 请求时,runserver 后第一次调用该视图都可以成功,第二次调用服务器会直接停止运行,如果去掉 requests 就没问题!难道视图函数里不能调用 requests 库么,这样的话还怎么做平台。。。这个问题困惑几天了,有大神解答么

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 21 条回复 时间 点赞

有报错吗?贴代码或者报错看看,是不是你用错了。这个说看不出来。

等我到公司了我贴出来哈

雷子 回复

他没有任何报错只是前端界面再次点击后台服务就自动停止了

这么奇怪,

尹全旺 回复

楼主可以加个联系方式么

我以前这么用过,没有问题啊。
加点 log 一步一步排查吧


我就是这么简单的一个调用,在视图里先调用接口请求,再返回,第一次没问题,第二次刷新页面服务就停止了

我这边是在 views 中调用其他 py 文件中的 request 发送请求,没问题。

edsion 回复


你们看下我的后台,第一次刷新页面请求时,后台打印出了接口请求信息,第二次刷新页面时服务就自动停止了,Process finished with exit code -1!

江乡萌蘖 回复

真的么 我这个好怪啊 就这么几句话 而且每次都是第二次刷新页面就会停止服务

玄月指光 回复

我加你

玄月指光 回复

我 qq1263374981 拜托了

你可以考虑这种解决方案,把 requests 封装一下,在 view 里调用你封装的 requests 的文件,把 url ,请求方法,post 的 data 当作参数传过去即可。

看到你说要做平台,那更加要把一些通用的工具封装一下,不然 view 里面代码会很乱的。

徐旻 回复

requests 封装了也不行。感觉只要调用 requests 库就会有这个问题,但是 get 请求可以,只有 post 会出问题!!请问这个什么解决方案么

刚才有论坛热心的同学针对我的问题在自己环境搭建了下,也是遇到和我一样的问题,第一次可以,第二次就挂掉了,这算是 django 的本身问题么。。。。。

尹全旺 回复

已经加你 qq 了。 因为我正好在用 requests 做一个平台,没有遇上你这种问题。

开了 debug? 看截图里的请求是 GET 方法啊, 感觉 url 路由也有变化 web/index?

onemorecd 回复

开了 debug 模式,因为是 web app 下的 所以是 web/index

import requests
import time
from urllib.parse import unquote

def index(request):
    data = {'service': 'create_activate_member', 'version': '1.0', 'request_time': int(time.time()), 'partner_id': '200029043446',
            '_input_charset': 'UTF-8', 'sign_type': 'RSA', 'sign_version': '1.0', 'encrypt_version': '1.0',
            'identity_id': '0401113818', 'identity_type': 'UID', 'client_ip': '1.1.1.1'}
    print(unquote(requests.post('https://gate.pay.sina.com.cn/mgs/gateway.do', data={'data':data}).text))
    return HttpResponse('index')

控制台的显示:

{"response_time":"20171227144005","_input_charset":"UTF-8","sign_version":"1.0","response_code":"ILLEGAL_ARGUMENT","response_message":"_input_charset不能为空"}
[27/Dec/2017 14:40:05] "GET /ep/index HTTP/1.1" 200 5
{"response_time":"20171227144010","_input_charset":"UTF-8","sign_version":"1.0","response_code":"ILLEGAL_ARGUMENT","response_message":"_input_charset不能为空"}

我尝试了一下,并没有什么错误。

所以你的 get_request_msg(),这个函数有问题??

不过我也尝试了手动触发一个异常,最多是报一个 500 的错误,django 不会退出啊。
还是看看是不是环境或者其它问题吧

多谢,找到问题了,加签加密我是用 jpype 调用 jar 包,第二次时 jpype 挂掉了,直接导致 django 挂掉

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册