Google 课堂 Api 通过客户端库批量请求

Google Classroom Api batch requests via client library

我对 google 课堂批处理请求有几个疑问

  1. 我在 documentation page 中看到这条通知“教室 API 当前遇到批请求问题。请改用多线程来处理大量请求负载。”。但是下面的通知将我带到了一个博客 post 说如果我使用适当的客户端库版本并且只发送同类请求,它仍然没问题。那么这个关于 Classroom API 批处理请求的通知是否仍然对适当的客户端库有效(google-api-python-client==1.7.11)?

  2. 这个不是批量请求,而是下面第三个问题。当我们列出 courses/teachers/students 时,有一个页面大小参数。如果低于 30,它 returns 是正确的数字,但高于 30 的数字仍然是 returns 30,我必须发送第二个请求才能获得其余的。这种行为是否记录在某处?

  3. 当请求有更多结果时(如第二季度)使用批处理请求,是否有适当的方法来收集其余结果。到目前为止我所拥有的是这样的。

def callback_s(id, res, exc):
    if exc:
        print('exception',str(exc))
    t = res.get('students',[])
    np = res.get('nextPageToken')
    if np:
        #how to get rest of the results

 def get_students(courses):
    service = discovery.build('classroom', 'v1', credentials=creds)
    br = service.new_batch_http_request(callback=callback_s)
    for c in courses:
        sr = service.courses().students().list(courseId=c['id'])
        br.add(sr, request_id=c['id'])
    br.execute()

任何指点将不胜感激。

课堂 API 批量请求问题:

页面顶部的警告一般指的是批量请求。这当然包括您使用的任何库,只要它们使用相同的 API(当然,官方 Python 库就是这种情况)。

您提到的博客 post 是关于停止支持全局批处理端点的,因此从现在起批处理请求必须是 API 特定的。这与有关课堂 API 批处理请求的当前问题完全无关。它也比警告早,并且没有考虑这些问题。

pageSize最大值:

pageSize 的文档未指定最大值。对于 teachers.list and students.list 提到默认值 (30)。如果您设置的值高于 30,但仍然只返回 30,那么这很可能也是最大值。

虽然这似乎没有记录在案:

pageSize: Maximum number of items to return. The default is 30 if unspecified or 0.

注意,这似乎不是 courses.list 的限制(未提及默认值 pageSize,调用它检索的方式超过 30)。

多个页面和批量请求:

您不能使用批量请求一次从 list 请求中请求多个页面,因为您需要上一页的 nextPageToken 来请求下一页(使用 pageToken) .也就是说,你必须一个接一个地提出要求。