AI测试 djang 调用 requests 困惑

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

最近开发 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 挂掉

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