Pygithub: 検索ごとに1000件の結果に制限があります。

作成日 2018年06月21日  ·  5コメント  ·  ソース: PyGithub/PyGithub

GitHub APIは、検索を1000件の結果に制限します。 この制限は、次のような、PyGitHubを介して実行された検索に影響GitHub.search_issues

検索がこの制限に達したという兆候はないようです。私が知っている例外やエラーはありません。 おそらく、これが発生したときに例外が発生するはずです(検出できる場合)。

複数の検索クエリを発行することでこの制限を回避することは可能ですが、そのようなクエリは、クエリの特定の目標に合わせて調整する必要があります(たとえば、プログレッシブ日付範囲でsearch_issuesを反復処理する)。これを一般化する方法は考えられません。

これに対処する方法について何か考えはありますか? 一般的な解決策はありますか?

この問題は、レート制限や結果のページ付けとは関係がないことに注意してください。

stale

最も参考になるコメント

この問題を再度開きますか?
他の検索の一般的な解決策についても同様です

全てのコメント5件

1000を超える結果がある場合でも、ある範囲の日付ですべてのプルリクエストを取得する方法を示す回避策を次に示します。

編集:私はこれを、クラスではなく、より単純になる結果をもたらすメソッドに書き直します

class PullRequestQuery:
    def __init__(self, git, repo, since, until):
        self.git = git
        self.repo = repo
        self.until = until
        self.issues = self.__query(since, until)

    def __iter__(self):
        skip = False
        while True:
            results = False
            for issue in self.issues:
                if not skip:
                    results = True
                    yield issue.as_pull_request()
                skip = False

            # If no more results then stop iterating.
            if not results:
                break

            # Start new query picking up where we left off. Previous issue will be first one returned, so skip it.
            self.issues = self.__query(issue.closed_at.strftime('%Y-%m-%dT%H:%M:%SZ'), self.until)
            skip = True

    def __query(self, since, until):
        querystring = 'type:pr is:closed repo:%s/%s closed:"%s..%s"' % (self.repo.organization.login, self.repo.name, since, until)
        return self.git.search_issues(query=querystring, sort="updated", order="asc")

このクラスを使用すると、次のようなことができます。

git = Github(user, passwd)
org = git.get_organization(orgname)
repo = org.get_repo(reponame)
for pull in PullRequestQuery(git, repo, "2017-01-01", "2017-12-31"):
    print "%s: %s" % (pull.number, pull.title)

検索に関するGithubAPIドキュメントを読むと、PyGithubの検索結果プロセスの一部としてincomplete_resultsが欠落していることにも気付きました。 おそらく、その値を含めることは、検索結果が(不完全な)不完全であるかどうかを検出するのにもすでに役立つ可能性があります。

PyGithubがフォークされ、ソースからローカルで実行されているので(#606を見ています)、おそらくこれをさらに調査することができます。

この問題は、最近のアクティビティがないため、自動的に古いものとしてマークされています。 それ以上のアクティビティが発生しない場合は閉じられます。 貢献していただきありがとうございます。

この問題を再度開きますか?
他の検索の一般的な解決策についても同様です

このページは役に立ちましたか?
0 / 5 - 0 評価