Skip to content

Commit a5f8e7f

Browse files
dcramerehfeng
authored andcommitted
Add scheduled jobs (#2743)
* Add scheduled jobs * regenerating migration, adding __core__ to model * moving to LockManager pattern * updating change with new table * using TimedRetryPolicy instead of manually creating locks * fixing CHANGES * updating migration * adding ted and jtcunning's comments * flipping info to debug when there's more than 100 jobs * addressing ted's comments * fixing ted comments
1 parent ac8fe04 commit a5f8e7f

File tree

6 files changed

+969
-0
lines changed

6 files changed

+969
-0
lines changed

CHANGES

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ Schema Changes
3737
- Added GroupResolution.actor_id
3838
- Added Project.platform
3939
- Added GroupSnooze.actor_id
40+
- Added ScheduledJob
41+
- Added GroupResolution.actor_id
42+
- Added ``ScheduledJob`` model
4043

4144
API Changes
4245
~~~~~~~~~~~

src/sentry/conf/server.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,6 +529,13 @@ def create_partitioned_queues(name):
529529
'queue': 'auth',
530530
}
531531
},
532+
'enqueue-scheduled-jobs': {
533+
'task': 'sentry.tasks.enqueue_scheduled_jobs',
534+
'schedule': timedelta(minutes=1),
535+
'options': {
536+
'expires': 60,
537+
},
538+
},
532539
'send-beacon': {
533540
'task': 'sentry.tasks.send_beacon',
534541
'schedule': timedelta(hours=1),

src/sentry/models/scheduledjob.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from __future__ import absolute_import, print_function
2+
3+
from django.db import models
4+
from django.utils import timezone
5+
from jsonfield import JSONField
6+
7+
from sentry.db.models import Model, sane_repr
8+
9+
10+
class ScheduledJob(Model):
11+
__core__ = False
12+
13+
name = models.CharField(max_length=128)
14+
payload = JSONField()
15+
date_added = models.DateTimeField(default=timezone.now)
16+
date_scheduled = models.DateTimeField()
17+
18+
class Meta:
19+
app_label = 'sentry'
20+
db_table = 'sentry_scheduledjob'
21+
22+
__repr__ = sane_repr('name', 'date_scheduled')

0 commit comments

Comments
 (0)