通过客户端库的Google课堂Api批处理请求

2024-06-14 09:39:06 发布

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

我对谷歌课堂批量请求没有什么疑问

  1. 我在documentation page“教室API当前遇到批处理请求问题。请改用多线程处理重载请求。”。但是下面的通知让我看到了一篇博客文章,上面说如果我使用正确的客户端库版本,只发送同质请求,仍然可以。那么,关于教室API批处理请求有问题的通知是否仍然适用于适当的客户端库(google API python client==1.7.11)

  2. 这篇文章不是关于批处理请求的,而是引出下面的第三个问题。当我们列出课程/教师/学生时,有一个页面大小参数。如果低于30,则返回正确的数字,但如果高于30,则仍返回30,我必须发送第二个请求以获取其余的数字。这种行为是否有记录

  3. 对于批处理请求,当请求有更多的结果时(如第2季度),是否有适当的方法来收集其余的结果。到目前为止,我得到的是这样的东西

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()

任何指点都将不胜感激


Tags: brapiid客户端getifdefservice
1条回答
网友
1楼 · 发布于 2024-06-14 09:39:06

课堂API批量请求问题:

页面顶部的警告通常指批处理请求。这当然包括您使用的任何库,只要它们使用相同的API(当然,官方Python库也是如此)

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

页面大小最大值:

pageSize的文档没有指定最大值。对于teachers.liststudents.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)。也就是说,你必须一个接一个地提出要求

相关问题 更多 >