File tree Expand file tree Collapse file tree 3 files changed +31
-1
lines changed Expand file tree Collapse file tree 3 files changed +31
-1
lines changed Original file line number Diff line number Diff line change 11import os
2+ from celery .schedules import crontab
23basedir = os .path .abspath (os .path .dirname (__file__ ))
34
45
@@ -18,6 +19,13 @@ class Config:
1819 # Celery configuration
1920 CELERY_BROKER_URL = os .getenv ('CELERY_BROKER_URL' )
2021 CELERY_RESULT_BACKEND = os .getenv ('CELERY_RESULT_BACKEND' )
22+ CELERY_IMPORTS = ["services.data_deletion.clean_archived_data" ]
23+ CELERYBEAT_SCHEDULE = {
24+ 'clean_archived_data' : {
25+ 'task' : 'clean_archived_data.delete_archived_data' ,
26+ 'schedule' : crontab (hour = 23 , minute = 00 )
27+ },
28+ }
2129
2230 @staticmethod
2331 def init_app (app ):
Original file line number Diff line number Diff line change 44# done
55cd /app
66export $( cat .env | xargs)
7- celery worker -A cworker.celery --loglevel=info
7+ celery worker -A cworker.celery --loglevel=info & celery beat -A cworker.celery --schedule=/tmp/celerybeat-schedule --loglevel=info --pidfile=/tmp/celerybeat.pid
Original file line number Diff line number Diff line change 1+ from helpers .database import database_uri
2+ from sqlalchemy import create_engine , MetaData , and_
3+ from datetime import timedelta , datetime
4+ import celery
5+
6+
7+ @celery .task (name = 'clean_archived_data.delete_archived_data' )
8+ def delete_archived_data ():
9+ database_engine = create_engine (database_uri )
10+ metadata = MetaData ()
11+ metadata .reflect (bind = database_engine )
12+ print ('deleting archived data...' )
13+
14+ for table in reversed (metadata .sorted_tables ):
15+ try :
16+ now = datetime .now ()
17+ delta = now - timedelta (days = 30 )
18+ statement = table .delete ().where (
19+ and_ (table .c .date_updated < delta , table .c .state == 'archived' ))
20+ database_engine .execute (statement )
21+ except AttributeError :
22+ continue
You can’t perform that action at this time.
0 commit comments