小编mat*_*cam的帖子

python请求随JSONDecodeError随机中断

我已经调试了几个小时,为什么我的代码随机因此错误而中断: JSONDecodeError: Expecting value: line 1 column 1 (char 0)

这是我的代码:

while True:
    try:
        submissions = requests.get('http://reymisterio.net/data-dump/api.php/submission?filter[]=form,cs,'+client+'&filter[]=date,cs,'+since).json()['submission']['records']
        break
    except requests.exceptions.ConnectionError:
        time.sleep(100)
Run Code Online (Sandbox Code Playgroud)

而且我一直在通过打印进行调试,requests.get(url)并且requests.get(url).text遇到了以下“特殊”情况:

  1. requests.get(url)返回成功的200响应并requests.get(url).text返回html。我已经在线阅读了使用时应该会失败的信息requests.get(url).json(),因为它无法读取html,但是以某种方式不会损坏。为什么是这样?

  2. requests.get(url)返回成功的200响应,并且requests.get(url).text为json格式。我不明白为什么到requests.get(url).json()JSONDecodeError时会中断?

requests.get(url).text情况2 的确切值为:

{
  "submission": {
    "columns": [
      "pk",
      "form",
      "date",
      "ip"
    ],
    "records": [
      [
        "21197",
        "mistico-form-contacto-form",
        "2018-09-21 09:04:41",
        "186.179.71.106"
      ]
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

python json python-requests jsondecoder

5
推荐指数
1
解决办法
3504
查看次数

如何操作 Google Ads API 的 Enum 类对象 - python

我正在使用 python 客户端库连接到 Google Ads 的 API。

    ga_service = client_service.get_service('GoogleAdsService')
    query = ('SELECT campaign.id, campaign.name, campaign.advertising_channel_type '
            'FROM campaign WHERE date BETWEEN \''+fecha+'\' AND \''+fecha+'\'')

    response = ga_service.search(<client_id>, query=query,page_size=1000)
    result = {}
    result['campanas'] = []

    try:
        for row in response:
            print row
            info = {}
            info['id'] = row.campaign.id.value
            info['name'] = row.campaign.name.value
            info['type'] = row.campaign.advertising_channel_type
Run Code Online (Sandbox Code Playgroud)

当我解析这些值时,这是我得到的结果:

{
  "campanas": [
    {
      "id": <campaign_id>, 
      "name": "Lanzamiento SIKU", 
      "type": 2
    }, 
    {
      "id": <campaign_id>, 
      "name": "lvl1 - website traffic", 
      "type": 2
    }, 
    {
      "id": …
Run Code Online (Sandbox Code Playgroud)

python enums google-api google-ads-api

5
推荐指数
2
解决办法
1181
查看次数

flask_restplus' marshal_with 返回带有空值的响应

我正在使用 flask_restplus 创建一个文档化的 API。在名帅装饰控制哪些数据实际获取呈现在您的回复,但我有麻烦渲染数据。我有以下代码:

kpis_model = api.model('kpis', {
    'cpl_actual': fields.Integer(description='costo por lead total del mes actual'),
    'cpl_anterior': fields.Integer(description='costo por lead total del mes anterior'),
    'cpl_diferencia': fields.Integer(description='diferencia de cpl_actual y cpl_anterior')
})

@data.route('/kpis/<cliente>/<mes>/<ano>')
@data.doc(params={'cliente': 'id de Facebook del cliente','mes':'el mes que se desea usar (dos digitos)','ano':'el ano que se desea usar (cuatro digitos)'})
class Kpis(Resource):
    @data.marshal_with(kpis_model)
    def get(self,cliente,mes,ano):
        '''sacar KPIs principales'''
        data = {}
        data['cpl_actual'] = 300
        data['cpl_anterior'] = 100
        data['cpl_diferencia'] = data['cpl_actual'] - data['cpl_anterior']
        return jsonify(data)
Run Code Online (Sandbox Code Playgroud)

然后当我去路线 /kpis/cliente/mes/ano …

null api-design marshalling flask flask-restplus

1
推荐指数
1
解决办法
1761
查看次数