googleapi批处理请求对于每次通过Python clien调用都返回httperror404

2024-04-25 19:39:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个基于google-api-python-client的小应用程序,但是批处理请求已经有几天没有工作了(错误404)。在

例如,以下代码在几天前还可以正常工作。在

from apiclient.http import BatchHttpRequest
from apiclient.discovery import build
import json

DEVELOPER_KEY = "foobar"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"

channelIds = ['UC2C_jShtL725hvbm1arSV9w','UC2C_jShtL725hvbm1arSV9w']

parts_list = [
"id",
"brandingSettings",
]

fields_list = [
"items/id",
"items/brandingSettings/channel",    
]

parts = ",".join(parts_list)
fields = ",".join(fields_list)

request_map = {}

def this_is_the_callback_function(request_id, response, exception):
  if exception is not None:
    # Do something with the exception
    print exception
    pass
  else:
    print request_id
    print request_map[int(request_id)]
    print json.dumps(response,sort_keys=True, indent=4)

service = build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION, developerKey=DEVELOPER_KEY)
batch = service.new_batch_http_request(callback=this_is_the_callback_function)

channels = service.channels()
i = 0
for c in channelIds:
    i += 1
    request_map[i] = c
    request = channels.list(id=c,part=parts, fields=fields)
    batch.add(request)
print request_map
batch.execute()

现在,如果我运行它,我会得到:

^{pr2}$

奇怪。我觉得奇怪的是,如果我试图对这些链接发出一个简单的请求(只需在浏览器中剪切和粘贴一个URL),服务器就会像往常一样返回数据。在


Tags: theimportapiidmapfieldsyoutubeis
1条回答
网友
1楼 · 发布于 2024-04-25 19:39:50

这个问题似乎已经用最新版本的python库修复了。在

但是,如果有人仍然需要解决这个问题,或者使用不同的环境(比如iOS或android),那就是解决方案。在

谷歌似乎在一个单独的批处理url之前使用过,它是:

https://www.googleapis.com/batch

这在我的应用程序中运行得很好,直到它突然停止。解决方案似乎是将批处理调用的url更改为:

https://www.googleapis.com/batch/youtube/v3 (用于youtube API)

通常googleapi对象将公开一个允许更改此值的属性,但如果不能,则可以在源代码中更改它。在

相关问题 更多 >