Google 课堂 Api 通过客户端库批量请求
Google Classroom Api batch requests via client library
我对 google 课堂批处理请求有几个疑问
我在 documentation page 中看到这条通知“教室 API 当前遇到批请求问题。请改用多线程来处理大量请求负载。”。但是下面的通知将我带到了一个博客 post 说如果我使用适当的客户端库版本并且只发送同类请求,它仍然没问题。那么这个关于 Classroom API 批处理请求的通知是否仍然对适当的客户端库有效(google-api-python-client==1.7.11)?
这个不是批量请求,而是下面第三个问题。当我们列出 courses/teachers/students 时,有一个页面大小参数。如果低于 30,它 returns 是正确的数字,但高于 30 的数字仍然是 returns 30,我必须发送第二个请求才能获得其余的。这种行为是否记录在某处?
当请求有更多结果时(如第二季度)使用批处理请求,是否有适当的方法来收集其余结果。到目前为止我所拥有的是这样的。
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
) .也就是说,你必须一个接一个地提出要求。
我对 google 课堂批处理请求有几个疑问
我在 documentation page 中看到这条通知“教室 API 当前遇到批请求问题。请改用多线程来处理大量请求负载。”。但是下面的通知将我带到了一个博客 post 说如果我使用适当的客户端库版本并且只发送同类请求,它仍然没问题。那么这个关于 Classroom API 批处理请求的通知是否仍然对适当的客户端库有效(google-api-python-client==1.7.11)?
这个不是批量请求,而是下面第三个问题。当我们列出 courses/teachers/students 时,有一个页面大小参数。如果低于 30,它 returns 是正确的数字,但高于 30 的数字仍然是 returns 30,我必须发送第二个请求才能获得其余的。这种行为是否记录在某处?
当请求有更多结果时(如第二季度)使用批处理请求,是否有适当的方法来收集其余结果。到目前为止我所拥有的是这样的。
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
) .也就是说,你必须一个接一个地提出要求。