构建状态增加平台终态只读核对,修复回调丢失后任务长期卡在构建中
工作流在脚本收尾前失败(拉取/编译/runner 异常)或 GENURL 不可达时, 结束回调会永久丢失,而等待页 30 秒轮询与列表页此前只读本地库, 任务只能等 6 小时本地超时,平台侧已失败也无法及时反映。 - GitHub/Gitea 后端新增只读 get_run(),仅在平台报告终态时返回结论, 在途、非 200、网络异常、坏 JSON 一律返回 None;不取消、不写平台 - 等待页 30 秒轮询同步核对一次真实状态:20 秒节流、6 秒超时、异常静默 - 我的构建/后台仪表盘改为后台守护线程核对,页面渲染零等待 - 仅做非终态到终态的条件更新,回调抢先到达时不会被覆盖 - 停止/删除纯本地语义、6 小时本地超时兜底等现有逻辑保持不变
This commit is contained in:
@@ -32,9 +32,10 @@ def staff_required(view_func):
|
||||
@login_required
|
||||
def my_builds(request):
|
||||
builds = list(GithubRun.objects.filter(created_by=request.user))
|
||||
# 仅做纯本地的 6 小时超时兜底,不向构建平台发起任何请求,页面秒开
|
||||
from .views import mark_stale_builds
|
||||
# 回调为第一状态来源;本地 6 小时超时兜底 + 后台线程只读核对平台终态(不阻塞页面)
|
||||
from .views import mark_stale_builds, schedule_refresh_for_runs
|
||||
mark_stale_builds(builds)
|
||||
schedule_refresh_for_runs(builds)
|
||||
return render(request, 'my_builds.html', {'builds': builds})
|
||||
|
||||
|
||||
@@ -149,9 +150,10 @@ def delete_token(request, key):
|
||||
@staff_required
|
||||
def dashboard(request):
|
||||
builds = list(GithubRun.objects.select_related('created_by').all()[:100])
|
||||
# 仅做纯本地的 6 小时超时兜底,不向构建平台发起任何请求,页面秒开
|
||||
from .views import mark_stale_builds
|
||||
# 回调为第一状态来源;本地 6 小时超时兜底 + 后台线程只读核对平台终态(不阻塞页面)
|
||||
from .views import mark_stale_builds, schedule_refresh_for_runs
|
||||
mark_stale_builds(builds)
|
||||
schedule_refresh_for_runs(builds)
|
||||
stats = {
|
||||
'total': GithubRun.objects.count(),
|
||||
'in_progress': GithubRun.objects.exclude(
|
||||
|
||||
Reference in New Issue
Block a user