chore: create stale submission cleanup task and other deployment tweaks (#4358)
* chore: disable beat container for dev * chore: use init option with celery container * chore: create cancel_stale_submissions task via migration * chore: revert accidental change included in last commit * chore: terminate celery docker-init.sh on failed command
This commit is contained in:
parent
bd6d19efff
commit
727feabfff
|
@ -1,4 +1,4 @@
|
|||
#!/bin/bash
|
||||
#!/bin/bash -e
|
||||
#
|
||||
# Environment parameters:
|
||||
#
|
||||
|
|
|
@ -65,6 +65,7 @@ services:
|
|||
|
||||
celery:
|
||||
image: ghcr.io/ietf-tools/datatracker-celery:latest
|
||||
init: true
|
||||
environment:
|
||||
CELERY_APP: ietf
|
||||
CELERY_ROLE: worker
|
||||
|
@ -79,20 +80,23 @@ services:
|
|||
- .:/workspace
|
||||
- app-assets:/assets
|
||||
|
||||
beat:
|
||||
image: ghcr.io/ietf-tools/datatracker-celery:latest
|
||||
environment:
|
||||
CELERY_APP: ietf
|
||||
CELERY_ROLE: beat
|
||||
UPDATE_REQUIREMENTS_FROM: requirements.txt
|
||||
command:
|
||||
- '--loglevel=INFO'
|
||||
depends_on:
|
||||
- db
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 1m
|
||||
volumes:
|
||||
- .:/workspace
|
||||
# Celery Beat is a periodic task runner. It is not normally needed for development,
|
||||
# but can be enabled by uncommenting the following.
|
||||
#
|
||||
# beat:
|
||||
# image: ghcr.io/ietf-tools/datatracker-celery:latest
|
||||
# environment:
|
||||
# CELERY_APP: ietf
|
||||
# CELERY_ROLE: beat
|
||||
# UPDATE_REQUIREMENTS_FROM: requirements.txt
|
||||
# command:
|
||||
# - '--loglevel=INFO'
|
||||
# depends_on:
|
||||
# - db
|
||||
# restart: unless-stopped
|
||||
# stop_grace_period: 1m
|
||||
# volumes:
|
||||
# - .:/workspace
|
||||
|
||||
volumes:
|
||||
mariadb-data:
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
# Generated by Django 2.2.28 on 2022-08-23 08:45
|
||||
|
||||
from django.db import migrations
|
||||
from django.utils import timezone
|
||||
|
||||
|
||||
def forward(apps, schema_editor):
|
||||
IntervalSchedule = apps.get_model('django_celery_beat', 'IntervalSchedule')
|
||||
PeriodicTask = apps.get_model('django_celery_beat', 'PeriodicTask')
|
||||
PeriodicTasks = apps.get_model('django_celery_beat', 'PeriodicTasks')
|
||||
every_five_minutes, _ = IntervalSchedule.objects.get_or_create(
|
||||
every=5,
|
||||
period='minutes', # in non-migration code, use IntervalSchedule.MINUTES instead
|
||||
)
|
||||
task, _ = PeriodicTask.objects.get_or_create(
|
||||
interval=every_five_minutes,
|
||||
name='Cancel stale submissions',
|
||||
task='ietf.submit.tasks.cancel_stale_submissions',
|
||||
)
|
||||
# this replicates the PeriodicTasks.changed() call as of django-celery-beat==2.3.0
|
||||
PeriodicTasks.objects.update_or_create(ident=1, defaults={'last_update': timezone.now()})
|
||||
|
||||
|
||||
def reverse(apps, schema_editor):
|
||||
IntervalSchedule = apps.get_model('django_celery_beat', 'IntervalSchedule')
|
||||
PeriodicTask = apps.get_model('django_celery_beat', 'PeriodicTask')
|
||||
PeriodicTasks = apps.get_model('django_celery_beat', 'PeriodicTasks')
|
||||
every_five_minutes = IntervalSchedule.objects.get(
|
||||
every=5,
|
||||
period='minutes', # in non-migration code, use IntervalSchedule.MINUTES instead
|
||||
)
|
||||
task = PeriodicTask.objects.get(
|
||||
interval=every_five_minutes,
|
||||
name='Cancel stale submissions',
|
||||
task='ietf.submit.tasks.cancel_stale_submissions',
|
||||
)
|
||||
task.delete()
|
||||
every_five_minutes.delete()
|
||||
# this replicates the PeriodicTasks.changed() call as of django-celery-beat==2.3.0
|
||||
PeriodicTasks.objects.update_or_create(ident=1, defaults={'last_update': timezone.now()})
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('submit', '0009_auto_20220427_1223'),
|
||||
('django_celery_beat', '0016_alter_crontabschedule_timezone'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(forward, reverse),
|
||||
]
|
Loading…
Reference in a new issue