当我在django shell上执行python函数时,它执行得很好。但是,当函数通过crontab执行时,它会给出“没有JSON对象可以解码”的错误。
successfully made the api call. response status is 200
Exception occured : No JSON object could be decoded
Failed to complete cronjob at ('0,30 * * * *', 'myapp.cron.pulldata', ' >> /usr/local/devops/myapp/crontab.log')
Traceback (most recent call last):
File "/usr/local/devops/provider_monitoring/env/lib/python2.7/site-packages/django_crontab/crontab.py", line 145, in run_job
func(*job_args, **job_kwargs)
File "/usr/local/devops/provider_monitoring/provider_monitoring/provider_automation/cron.py", line 49, in pulldata_and_createjira
response = response.json()
File "/usr/local/devops/provider_monitoring/env/lib/python2.7/site-packages/requests/models.py", line 866, in json
return complexjson.loads(self.text, **kwargs)
File "/opt/python-2.7.10/lib/python2.7/json/__init__.py", line 338, in loads
return _default_decoder.decode(s)
File "/opt/python-2.7.10/lib/python2.7/json/decoder.py", line 366, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/opt/python-2.7.10/lib/python2.7/json/decoder.py", line 384, in raw_decode
raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded我在我的代码中做了一个POST调用来实现rest。
payload = {'search' : 'search index="xyz" | table a , b , c' , 'earliest_time' : '-60m' , 'output_mode' : 'json_rows' }
url = "https://localhost:8089/services/search/jobs/export"
headers = {'content-type': "application/x-www-form-urlencoded",'authorization': "xyz",'cache-control': "no-cache"}
response = requests.adapters.HTTPAdapter(pool_connections=10, pool_maxsize=10, max_retries=5, pool_block=False)
response = requests.request("POST", url, data=payload, headers=headers, verify=False)
response = response.json()只有在cron中运行python函数时才会出错。
我使用python版本: 2.7.10 django : 1.8
发布于 2017-03-26 20:26:35
当您没有来自api的响应时,您会得到"No对象无法解码“错误。
甚至我也有同样的问题,我正在对splunk进行REST调用,在那里我想收集每30 minutes.So生成一次minutes.So数据,我的cron每30分钟运行一次。但每隔30分钟,api仍在聚合数据,因此每30分钟就失败一次。当我使用时间延迟(即数据被正确聚合的时间)访问api时,我得到了响应。
所以现在我的克郎是这样的:
5-59/30 * * * *这个cron将在5分钟后运行,35分钟后运行
https://stackoverflow.com/questions/42957919
复制相似问题