如何捕获github异常

问题描述 投票:0回答:3

我正在尝试从 Github 获取提交。但我遇到了 409 错误,我想在失败后重试。 我认为问题在于没有从 GithubExceptions 中正确捕获错误。

df_commits = pd.DataFrame(columns=['repo', 'commits', 'user' , 'created_at'])
    for repo in org.get_repos():
commits = repo.get_commits(since=datetime(2022, 9, 1))
for commits in commits:
    try:
        df_commits = df_commits.append({'repo': repo.name, 'commits': commits, 'user' : 
   commits.author, 'created_at' : commits.commit.author.date}, ignore_index=True)
    except:
        GithubException == 409
        print(GithubException)
        continue
Traceback (most recent call last):
  File "c:\Users\Q4V\Documents\VanOordProjects\Github\commits.py", line 16, in <module>
    for commits in commits:
  File "C:\Users\Q4V\AppData\Local\Programs\Python\Python310\lib\site-packages\github\PaginatedList.py", line 56, in __iter__
    newElements = self._grow()
  File "C:\Users\Q4V\AppData\Local\Programs\Python\Python310\lib\site-packages\github\PaginatedList.py", line 67, in _grow
    newElements = self._fetchNextPage()
  File "C:\Users\Q4V\AppData\Local\Programs\Python\Python310\lib\site-packages\github\PaginatedList.py", line 199, in _fetchNextPage
    headers, data = self.__requester.requestJsonAndCheck(
  File "C:\Users\Q4V\AppData\Local\Programs\Python\Python310\lib\site-packages\github\Requester.py", line 
353, in requestJsonAndCheck
    return self.__check(
  File "C:\Users\Q4V\AppData\Local\Programs\Python\Python310\lib\site-packages\github\Requester.py", line 
378, in __check
    raise self.__createException(status, responseHeaders, output)
github.GithubException.GithubException: 409 {"message": "Git Repository is empty.", "documentation_url": "https://docs.github.com/rest/commits/commits#list-commits"}
python
3个回答
2
投票

这就是我检查 403 错误的方法:

from github import GithubException
    result = []
    organization = g.get_organization("org_name")
    invites = organization.invitations()
    try:
        #get invites from result
        for invite in invites:
            print(result.append(invite))
    except GithubException as e:
        if e.status== 403:
            print("You need admin access")

参考:GithubException类

注意:e.data给出了实际的异常数据。

更新:需要提出一些特定的例外情况,如此处

所示

这个开源存储库有许多使用 PyGithub 进行的预构建 Github 操作,我们可以直接将其用于任何自动化。 (提到这一点是因为我发现它真的很酷)

他们正在创建一个开源框架,用于使用 Jupyter 笔记本编写 Runbook。


1
投票

捕获异常的方法有多种。下面我仅举两个例子。请阅读更多如何正确使用 try/ except 块。您的代码的问题在于,您输入的 GithubException 只是一个变量名,可能甚至没有定义。

你可以尝试:

for commit in commits:
    try:
        ...
    except Exception as e:
        print(f'got Exception {e}')
        continue

下面的块将捕获任何异常并继续。

您可以更复杂,仅在给出特定错误消息时检查traceback以继续。

import traceback


for commit in commits:
    try:
        ...
    except Exception as e:
        tb = traceback.format_exc()
        if 'Git Repository is empty' in tb:
            print(f'The repo is empty!')
            continue
        else:
            ...

0
投票

这对我有用:

        from github import GithubException

        try:
            ...
        except GithubException as ex:
            print(f"Error code: {ex.status}, error message: {ex.data['message']}")
© www.soinside.com 2019 - 2024. All rights reserved.