Github3.py etag用于条件请求



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

user.iter_starred(etag='97ba89b5c009e5530f108a06606f3e2c')

以避免消耗我的速率限制并执行条件请求。但无论如何,当我开始迭代github3总是执行一个适当的请求(因此实际数据被获取)降低速率限制1。

是我做错了什么还是一个bug?

从我自己的实验来看,这似乎像预期的那样工作:

>>> 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',而相当于我的是'"97ba89b5c009e5530f108a06606f3e2c"'。因为这个值是放置在标题,我认为这是重要的,标题是:

If-None-Match: "97ba89b5c009e5530f108a06606f3e2c"

代替:

If-None-Match: 97ba89b5c009e5530f108a06606f3e2c

这是你将发送的。

我刚检查过,这就是问题所在。图书馆按预期工作。您传递etag值的方式是错误的。它需要在值周围有双引号(例如,'"97ba89b5c009e5530f108a06606f3e2c"')才能正常工作

相关内容

  • 没有找到相关文章

最新更新