问题描述
- django + mysql + collect.py
使用collection.py脚本收集信息到入库的时候,urllib请求出错,但是数据是已经入库了的
Traceback (most recent call last):
File "collectRHEL.py", line 201, in <module>
req = urllib2.urlopen(url, url_encode)
File "/root/.pyenv/versions/2.7.11/lib/python2.7/urllib2.py", line 154, in urlopen
return opener.open(url, data, timeout)
File "/root/.pyenv/versions/2.7.11/lib/python2.7/urllib2.py", line 437, in open
response = meth(req, response)
File "/root/.pyenv/versions/2.7.11/lib/python2.7/urllib2.py", line 550, in http_response
'http', request, response, code, msg, hdrs)
File "/root/.pyenv/versions/2.7.11/lib/python2.7/urllib2.py", line 475, in error
return self._call_chain(*args)
File "/root/.pyenv/versions/2.7.11/lib/python2.7/urllib2.py", line 409, in _call_chain
result = func(*args)
File "/root/.pyenv/versions/2.7.11/lib/python2.7/urllib2.py", line 558, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 500: INTERNAL SERVER ERROR
解决思路,测试方法
- 先清空库中的数据,修改ORM某个字段,让其长度小于要插入数据的长度,这样一定会出错,然后分别以urllib, urllib2来请求
- 和上次测试一样,但是这次给到足够长的长度,再以urllib, urllib2来分别测试
测试结果
- 无论是urllib, urllib2都会出错
- 无论使用那个模块,都不会出问题
结论
1、确定ORM模型中数据库字段的长度
2、其实使用urllib.urlopen()或者是urllib2.urlopen()关系并不大