1 from datetime
import datetime
, timedelta
2 from importlib
import import_module
4 from celery
import shared_task
5 from django_db_geventpool
.utils
import close_connection
7 from django
.contrib
.auth
import get_user_model
8 from django
.conf
import settings
10 from mygpo
.celery
import celery
13 from celery
.utils
.log
import get_task_logger
15 logger
= get_task_logger(__name__
)
18 @shared_task(max_retries
=5, default_retry_delay
=60)
20 def sync_user(user_pk
):
21 """Syncs all of the user's sync groups"""
22 from mygpo
.users
.models
import SubscriptionException
24 User
= get_user_model()
25 user
= User
.objects
.get(pk
=user_pk
)
27 groups
= models
.SyncGroup
.objects
.filter(user
=user
)
33 except SubscriptionException
:
34 # no need to retry on SubscriptionException
37 except Exception as e
:
38 logger
.exception("retrying task")
39 raise sync_user
.retry()
42 @shared_task(run_every
=timedelta(hours
=1))
44 def remove_inactive_users():
45 """Remove users that have not been activated"""
46 User
= get_user_model()
48 # time for which to keep unactivated and deleted users
49 valid_days
= settings
.ACTIVATION_VALID_DAYS
50 remove_before
= datetime
.utcnow() - timedelta(days
=valid_days
)
51 logger
.warning("Removing unactivated users before %s", remove_before
)
53 users
= User
.objects
.filter(is_active
=False, date_joined__lt
=remove_before
)
56 clients
= models
.Client
.objects
.filter(user
=user
)
57 logger
.warning('Deleting %d clients of user "%s"', len(clients
), user
.username
)
59 logger
.warning('Deleting user "%s"', user
.username
)
63 @shared_task(run_every
=timedelta(hours
=1))
66 """Clear expired sessions
68 This runs code that should normally be run by ``manage.py clearsessions``.
69 If Django's internals change, see
70 django/contrib/sessions/management/commands/clearsessions.py for the
71 current implementation."""
73 engine
= import_module(settings
.SESSION_ENGINE
)
74 engine
.SessionStore
.clear_expired()