首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >github3.py etag用于条件请求

github3.py etag用于条件请求
EN

Stack Overflow用户
提问于 2014-03-28 01:37:43
回答 1查看 263关注 0票数 0

我使用github3.py在每次调用迭代器时传递etag参数,例如:

代码语言:javascript
复制
user.iter_starred(etag='97ba89b5c009e5530f108a06606f3e2c')

以避免消耗我的速率限制和执行conditional request。但不管怎样,当我开始迭代时,github3总是执行适当的请求(因此会获取实际数据),将速率限制减少1。

是我做错了什么,还是有个bug?

EN

回答 1

Stack Overflow用户

发布于 2014-03-29 02:14:02

从我自己的实验来看,这似乎和预期的一样:

代码语言:javascript
复制
>>> import github3
>>> u = github3.user('sigmavirus24')
>>> u
<User [sigmavirus24:Ian Cordasco]>
>>> i = u.iter_starred()
>>> i
<GitHubIterator [-1, /users/sigmavirus24/starred]>
>>> next(i)
<Repository [functional-koans/clojure-koans]>
>>> i.etag
'"1aeaaa7a249610c52ba0363009afcab9"'
>>> next(u.iter_starred(etag=i.etag))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "github3/structs.py", line 103, in next
    return self.__next__()
  File "github3/structs.py", line 90, in __next__
    return next(self.__i__)
StopIteration

我们的示例之间的区别在于,您的etag值是'97ba89b5c009e5530f108a06606f3e2c',而与我的etag值相当的是'"97ba89b5c009e5530f108a06606f3e2c"'。因为这个值被放在头中,所以我认为头应该是:

代码语言:javascript
复制
If-None-Match: "97ba89b5c009e5530f108a06606f3e2c"

而不是:

代码语言:javascript
复制
If-None-Match: 97ba89b5c009e5530f108a06606f3e2c

这就是你要发送的内容。

我只是检查了一下,这就是问题所在。库的工作情况与预期一致。传递etag值的方式是错误的。它需要用双引号将值引起来(例如,'"97ba89b5c009e5530f108a06606f3e2c"')才能正常工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22695151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档