Add periodic task to remove stale shared uploads.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
from __future__ import absolute_import, unicode_literals
|
||||
|
||||
from datetime import timedelta
|
||||
import logging
|
||||
|
||||
from kombu import Exchange, Queue
|
||||
@@ -22,7 +23,9 @@ from .links import (
|
||||
link_current_user_locale_profile_edit, link_filters, link_license,
|
||||
link_setup, link_tools
|
||||
)
|
||||
from .literals import DELETE_STALE_UPLOADS_INTERVAL
|
||||
from .menus import menu_facet, menu_main, menu_secondary, menu_tools
|
||||
from .tasks import task_delete_stale_uploads # NOQA - Force task registration
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -58,15 +61,38 @@ class CommonApp(MayanAppConfig):
|
||||
def ready(self):
|
||||
super(CommonApp, self).ready()
|
||||
|
||||
app.conf.CELERYBEAT_SCHEDULE.update(
|
||||
{
|
||||
'task_delete_stale_uploads': {
|
||||
'task': 'common.tasks.task_delete_stale_uploads',
|
||||
'schedule': timedelta(
|
||||
seconds=DELETE_STALE_UPLOADS_INTERVAL
|
||||
),
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
app.conf.CELERY_QUEUES.extend(
|
||||
(
|
||||
Queue('default', Exchange('default'), routing_key='default'),
|
||||
Queue('tools', Exchange('tools'), routing_key='tools'),
|
||||
Queue(
|
||||
'common_periodic', Exchange('common_periodic'),
|
||||
routing_key='common_periodic', delivery_mode=1
|
||||
),
|
||||
)
|
||||
)
|
||||
|
||||
app.conf.CELERY_DEFAULT_QUEUE = 'default'
|
||||
|
||||
app.conf.CELERY_ROUTES.update(
|
||||
{
|
||||
'common.tasks.task_delete_stale_uploads': {
|
||||
'queue': 'common_periodic'
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
menu_facet.bind_links(
|
||||
links=(
|
||||
link_current_user_details,
|
||||
|
||||
@@ -2,8 +2,11 @@ from __future__ import unicode_literals
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
||||
DELETE_STALE_UPLOADS_INTERVAL = 60 * 10 # 10 minutes
|
||||
TIME_DELTA_UNIT_CHOICES = (
|
||||
('days', _('Days')),
|
||||
('hours', _('Hours')),
|
||||
('minutes', _('Minutes')),
|
||||
)
|
||||
UPLOAD_EXPIRATION_INTERVAL = 60 * 60 * 24 * 7 # 7 days
|
||||
|
||||
24
mayan/apps/common/tasks.py
Normal file
24
mayan/apps/common/tasks.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from datetime import timedelta
|
||||
import logging
|
||||
|
||||
from django.utils.timezone import now
|
||||
|
||||
from mayan.celery import app
|
||||
from common.models import SharedUploadedFile
|
||||
|
||||
from .literals import UPLOAD_EXPIRATION_INTERVAL
|
||||
from .models import SharedUploadedFile
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@app.task(ignore_result=True)
|
||||
def task_delete_stale_uploads():
|
||||
logger.info('Executing')
|
||||
|
||||
for expired_upload in SharedUploadedFile.objects.filter(datetime__lt=now() - timedelta(seconds=UPLOAD_EXPIRATION_INTERVAL)):
|
||||
expired_upload.delete()
|
||||
|
||||
logger.info('Finshed')
|
||||
Reference in New Issue
Block a user