ogn-python/ogn_python/collect/celery.py

110 wiersze
3.8 KiB
Python
Czysty Zwykły widok Historia

2019-03-10 14:58:10 +00:00
import datetime
2019-03-10 14:58:10 +00:00
from celery.utils.log import get_task_logger
from ogn_python.collect.takeoff_landings import update_entries as takeoff_update_entries
2019-03-10 14:58:10 +00:00
from ogn_python.collect.logbook import update_entries as logbook_update_entries
from ogn_python.collect.logbook import update_max_altitudes as logbook_update_max_altitudes
2015-11-15 18:31:58 +00:00
from ogn_python.collect.database import import_ddb as device_infos_import_ddb
2019-03-10 14:58:10 +00:00
from ogn_python.collect.database import update_country_code as receivers_update_country_code
2019-03-24 08:04:50 +00:00
from ogn_python.collect.stats import create_device_stats, update_device_stats_jumps, create_receiver_stats, create_relation_stats, update_qualities, update_receivers, update_devices
2019-03-23 23:00:59 +00:00
from ogn_python.collect.ognrange import update_entries as receiver_coverage_update_entries
2019-03-10 14:58:10 +00:00
from ogn_python import db
from ogn_python import celery
2015-11-15 18:31:58 +00:00
2019-03-10 14:58:10 +00:00
logger = get_task_logger(__name__)
2019-03-10 14:58:10 +00:00
@celery.task(name='update_takeoff_landings')
2019-03-18 19:41:58 +00:00
def update_takeoff_landings(last_minutes):
2019-03-10 14:58:10 +00:00
"""Compute takeoffs and landings."""
2019-03-18 19:41:58 +00:00
end = datetime.datetime.utcnow()
start = end - datetime.timedelta(minutes=last_minutes)
2019-03-30 16:50:29 +00:00
result = takeoff_update_entries(session=db.session, start=start, end=end, logger=logger)
return result
2019-03-10 14:58:10 +00:00
@celery.task(name='update_logbook_entries')
2019-04-14 17:57:40 +00:00
def update_logbook_entries(day_offset):
2019-03-10 14:58:10 +00:00
"""Add/update logbook entries."""
2019-04-14 17:57:40 +00:00
date = datetime.datetime.today() + datetime.timedelta(days=day_offset)
result = logbook_update_entries(session=db.session, date=date, logger=logger)
2019-03-30 16:50:29 +00:00
return result
2019-03-10 14:58:10 +00:00
@celery.task(name='update_logbook_max_altitude')
2019-04-14 17:57:40 +00:00
def update_logbook_max_altitude(day_offset):
2019-03-10 14:58:10 +00:00
"""Add max altitudes in logbook when flight is complete (takeoff and landing)."""
2019-04-14 17:57:40 +00:00
date = datetime.datetime.today() + datetime.timedelta(days=day_offset)
result = logbook_update_max_altitudes(session=db.session, date=date, logger=logger)
2019-03-30 16:50:29 +00:00
return result
2019-03-10 14:58:10 +00:00
@celery.task(name='import_ddb')
def import_ddb():
"""Import registered devices from the DDB."""
2019-03-30 16:50:29 +00:00
result = device_infos_import_ddb(session=db.session, logger=logger)
return result
2019-03-10 14:58:10 +00:00
@celery.task(name='update_receivers_country_code')
def update_receivers_country_code():
"""Update country code in receivers table if None."""
2019-03-30 16:50:29 +00:00
result = receivers_update_country_code(session=db.session, logger=logger)
return result
2019-03-18 07:37:19 +00:00
@celery.task(name='purge_old_data')
2019-03-18 19:41:58 +00:00
def purge_old_data(max_hours):
2019-03-18 07:37:19 +00:00
"""Delete AircraftBeacons and ReceiverBeacons older than given 'age'."""
from ogn_python.model import AircraftBeacon, ReceiverBeacon
2019-03-18 19:41:58 +00:00
min_timestamp = datetime.datetime.utcnow() - datetime.timedelta(hours=max_hours)
2019-04-14 17:57:40 +00:00
aircraft_beacons_deleted = db.session.query(AircraftBeacon) \
2019-03-18 19:41:58 +00:00
.filter(AircraftBeacon.timestamp < min_timestamp) \
2019-03-18 07:37:19 +00:00
.delete()
2019-04-14 17:57:40 +00:00
receiver_beacons_deleted = db.session.query(ReceiverBeacon) \
2019-03-18 19:41:58 +00:00
.filter(ReceiverBeacon.timestamp < min_timestamp) \
2019-03-18 07:37:19 +00:00
.delete()
2019-03-18 21:48:42 +00:00
2019-03-23 23:00:59 +00:00
db.session.commit()
2019-04-14 17:57:40 +00:00
result = "{} AircraftBeacons deleted, {} ReceiverBeacons deleted".format(aircraft_beacons_deleted, receiver_beacons_deleted)
return result
2019-03-23 23:00:59 +00:00
@celery.task(name='update_stats')
def update_stats(day_offset):
2019-03-24 07:59:57 +00:00
"""Create stats and update receivers/devices with stats."""
2019-03-23 23:00:59 +00:00
date = datetime.datetime.today() + datetime.timedelta(days=day_offset)
create_device_stats(session=db.session, date=date)
update_device_stats_jumps(session=db.session, date=date)
create_receiver_stats(session=db.session, date=date)
create_relation_stats(session=db.session, date=date)
2019-03-24 07:59:57 +00:00
update_qualities(session=db.session, date=date)
2019-03-24 08:04:50 +00:00
update_receivers(session=db.session)
update_devices(session=db.session)
@celery.task(name='update_ognrange')
def update_ognrange(day_offset):
"""Create receiver coverage stats for Melissas ognrange."""
date = datetime.datetime.today() + datetime.timedelta(days=day_offset)
receiver_coverage_update_entries(session=db.session, date=date)