You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python+AWS服务实现每日拉取GitHub超时PR及负责人列表

需求实现完整方案

一、PyCharm环境下对接GitHub拉取PR数据

1. 前置准备

  • 首先生成GitHub Personal Access Token(PAT):登录GitHub进入「Settings」→「Developer settings」→「Personal access tokens」,生成新token,勾选repo、read:org权限,保存好生成的token不要泄露。
  • 打开PyCharm,进入「Settings/Preferences」→「Version Control」→「GitHub」,点击加号选择用PAT登录,输入刚才生成的token即可完成PyCharm与GitHub的账号关联。

2. 依赖安装

在PyCharm的终端中执行命令安装GitHub API封装库:

pip install PyGitHub

3. 核心实现代码

建议把敏感配置放在环境变量中,不要硬编码到代码里,参考示例如下:

import os
from datetime import datetime, timedelta
from github import Github

# 从环境变量读取配置
GITHUB_TOKEN = os.getenv("GITHUB_PAT")
ORG_NAME = os.getenv("GITHUB_ORG_NAME")
# PR开启时长阈值,单位为小时
PR_EXPIRE_HOURS = int(os.getenv("PR_EXPIRE_HOURS", 24))

# 初始化GitHub客户端
gh_client = Github(GITHUB_TOKEN)
target_org = gh_client.get_organization(ORG_NAME)
match_pr_list = []

# 遍历组织下所有仓库的开放PR
for repo in target_org.get_repos():
    for open_pr in repo.get_pulls(state="open"):
        create_time = open_pr.created_at.replace(tzinfo=None)
        open_duration = datetime.utcnow() - create_time
        # 筛选超过指定时长的PR
        if open_duration.total_seconds() > PR_EXPIRE_HOURS * 3600:
            match_pr_list.append({
                "仓库名": repo.name,
                "PR标题": open_pr.title,
                "PR链接": open_pr.html_url,
                "负责人": open_pr.user.login,
                "开启时长(小时)": round(open_duration.total_seconds() / 3600, 1)
            })

# 输出结果,可根据需求修改为发邮件、发群通知等逻辑
for pr_info in match_pr_list:
    print(pr_info)

二、AWS端实现每日凌晨自动运行

Lambda完全可以支撑该需求,部署步骤如下:

  • 本地打包代码:在项目根目录执行命令安装依赖到当前目录:pip install PyGitHub -t .,把代码文件和所有依赖文件一起选中压缩为zip包。
  • 进入AWS Lambda控制台创建新函数,运行环境选择Python 3.9及以上版本,选择「上传zip文件」把刚才的压缩包上传。
  • 进入Lambda函数的「配置」→「环境变量」,添加GITHUB_PAT、GITHUB_ORG_NAME、PR_EXPIRE_HOURS三个变量,填入对应值。
  • 添加定时触发器:选择Amazon EventBridge服务,创建新的定时规则,cron表达式设置为你需要的凌晨执行时间,比如国内时区凌晨2点执行的cron为0 2 * * ? *,时区选择Asia/Shanghai即可。
  • 扩展通知逻辑:如果需要把PR列表自动推送给团队,可以在代码中增加对接钉钉/企业微信机器人的逻辑,或者调用AWS SNS服务发送邮件/短信通知。

三、注意事项

  • GitHub API有调用频率限制,普通PAT每分钟最多调用60次,若组织下仓库数量较多,可以申请GitHub App凭证获取更高的调用配额。
  • Lambda单次运行最长支持15分钟,若组织下仓库数量极多15分钟内无法遍历完成,可以拆分任务用AWS Step Functions分步执行。
  • 定期轮换GitHub PAT,避免凭证泄露带来安全风险。

内容的提问来源于stack exchange,提问作者Crazy_Chelesa86

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:24:02