Skip to content

Commit 94362e2

Browse files
committed
Simple task to finish inactive builds
Fixes #2795 Fixes #3308
1 parent f93e509 commit 94362e2

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

readthedocs/projects/tasks.py

+14
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from __future__ import absolute_import
88

9+
import datetime
910
import hashlib
1011
import json
1112
import logging
@@ -20,6 +21,7 @@
2021
from celery.exceptions import SoftTimeLimitExceeded
2122
from django.conf import settings
2223
from django.core.urlresolvers import reverse
24+
from django.db.models import Q
2325
from django.utils.translation import ugettext_lazy as _
2426
from readthedocs_build.config import ConfigError
2527
from slumber.exceptions import HttpClientError
@@ -1005,3 +1007,15 @@ def sync_callback(_, version_pk, commit, *args, **kwargs):
10051007
"""
10061008
fileify(version_pk, commit=commit)
10071009
update_search(version_pk, commit=commit)
1010+
1011+
1012+
@app.task()
1013+
def finish_inactive_builds():
1014+
query = (~Q(state=BUILD_STATE_FINISHED) &
1015+
Q(date__lte=datetime.datetime.now() - datetime.timedelta(minutes=45)))
1016+
# TODO: consider ``poject.container_time_limit`` since it could be bigger than 45 minutes
1017+
for build in Build.objects.filter(query):
1018+
build.success = False
1019+
build.state = BUILD_STATE_FINISHED
1020+
build.error = 'This build was terminated due to inactivity.'
1021+
build.save()

0 commit comments

Comments
 (0)