def process_datamap(self, pipe, positions): grids = set() for lat, lon in positions: if lat is not None and lon is not None: grids.add(DataMap.scale(lat, lon)) shards = defaultdict(set) for lat, lon in grids: shards[DataMap.shard_id(lat, lon)].add(encode_datamap_grid(lat, lon)) for shard_id, values in shards.items(): queue = self.task.app.data_queues['update_datamap_' + shard_id] queue.enqueue(list(values), pipe=pipe)
def process_datamap(self, pipe, positions): grids = set() for lat, lon in positions: if lat is not None and lon is not None: grids.add(DataMap.scale(lat, lon)) shards = defaultdict(set) for lat, lon in grids: shards[DataMap.shard_id(lat, lon)].add( encode_datamap_grid(lat, lon)) for shard_id, values in shards.items(): queue = self.task.app.data_queues['update_datamap_' + shard_id] queue.enqueue(list(values), pipe=pipe)
def configure_data(redis_client): """ Configure fixed set of data queues. """ data_queues = { 'update_cell': DataQueue('update_cell', redis_client, queue_key='update_cell'), # BBB 'update_cellarea': DataQueue('update_cellarea', redis_client, queue_key='update_cellarea'), 'update_cellarea_ocid': DataQueue('update_cellarea_ocid', redis_client, queue_key='update_cellarea_ocid'), 'update_score': DataQueue('update_score', redis_client, queue_key='update_score'), } for shard_id in DataMap.shards().keys(): name = 'update_datamap_' + shard_id data_queues[name] = DataQueue(name, redis_client, queue_key=name) for shard_id in CellShard.shards().keys(): name = 'update_cell_' + shard_id data_queues[name] = DataQueue(name, redis_client, queue_key=name) for shard_id in WifiShard.shards().keys(): name = 'update_wifi_' + shard_id data_queues[name] = DataQueue(name, redis_client, queue_key=name) return data_queues
def configure_data(redis_client): """ Configure fixed set of data queues. """ data_queues = { # *_incoming need to be the exact same as in webapp.config 'update_incoming': DataQueue('update_incoming', redis_client, batch=100, compress=True), 'transfer_incoming': DataQueue('transfer_incoming', redis_client, batch=100, compress=True), } for key in ('update_cellarea', ): data_queues[key] = DataQueue(key, redis_client, batch=100, json=False) for shard_id in BlueShard.shards().keys(): key = 'update_blue_' + shard_id data_queues[key] = DataQueue(key, redis_client, batch=500) for shard_id in DataMap.shards().keys(): key = 'update_datamap_' + shard_id data_queues[key] = DataQueue(key, redis_client, batch=500, json=False) for shard_id in CellShard.shards().keys(): key = 'update_cell_' + shard_id data_queues[key] = DataQueue(key, redis_client, batch=500) for shard_id in WifiShard.shards().keys(): key = 'update_wifi_' + shard_id data_queues[key] = DataQueue(key, redis_client, batch=500) return data_queues
def configure_data(redis_client): """ Configure fixed set of data queues. """ data_queues = { 'update_cell': DataQueue('update_cell', redis_client, queue_key='update_cell'), # BBB 'update_cellarea': DataQueue('update_cellarea', redis_client, queue_key='update_cellarea'), 'update_cellarea_ocid': DataQueue('update_cellarea_ocid', redis_client, queue_key='update_cellarea_ocid'), 'update_score': DataQueue('update_score', redis_client, queue_key='update_score'), } for shard_id in DataMap.shards().keys(): name = 'update_datamap_' + shard_id data_queues[name] = DataQueue(name, redis_client, queue_key=name) for shard_id in CellShard.shards().keys(): name = 'update_cell_' + shard_id data_queues[name] = DataQueue( name, redis_client, queue_key=name) for shard_id in WifiShard.shards().keys(): name = 'update_wifi_' + shard_id data_queues[name] = DataQueue( name, redis_client, queue_key=name) return data_queues
def configure_data(redis_client): """ Configure fixed set of data queues. """ data_queues = { # update_incoming needs to be the exact same as in webapp.config 'update_incoming': DataQueue('update_incoming', redis_client, batch=100, compress=True), } for key in ('update_cellarea', 'update_cellarea_ocid'): data_queues[key] = DataQueue(key, redis_client, batch=100, json=False) for shard_id in BlueShard.shards().keys(): key = 'update_blue_' + shard_id data_queues[key] = DataQueue(key, redis_client, batch=500) for shard_id in DataMap.shards().keys(): key = 'update_datamap_' + shard_id data_queues[key] = DataQueue(key, redis_client, batch=500, json=False) for shard_id in CellShard.shards().keys(): key = 'update_cell_' + shard_id data_queues[key] = DataQueue(key, redis_client, batch=500) for shard_id in WifiShard.shards().keys(): key = 'update_wifi_' + shard_id data_queues[key] = DataQueue(key, redis_client, batch=500) return data_queues
def celerybeat_schedule(app_config): """Return the celery beat schedule as a dictionary.""" sections = app_config.sections() schedule = { # Monitoring 'monitor-queue-size': { 'task': 'ichnaea.data.tasks.monitor_queue_size', 'schedule': timedelta(seconds=60), 'options': { 'expires': 57 }, }, 'monitor-api-users': { 'task': 'ichnaea.data.tasks.monitor_api_users', 'schedule': timedelta(seconds=600), 'options': { 'expires': 570 }, }, 'monitor-api-key-limits': { 'task': 'ichnaea.data.tasks.monitor_api_key_limits', 'schedule': timedelta(seconds=600), 'options': { 'expires': 570 }, }, # Statistics 'update-statcounter': { 'task': 'ichnaea.data.tasks.update_statcounter', 'args': (1, ), 'schedule': crontab(minute=3), 'options': { 'expires': 2700 }, }, 'update-statregion': { 'task': 'ichnaea.data.tasks.update_statregion', 'schedule': crontab(minute=5), 'options': { 'expires': 2700 }, }, # Data Pipeline 'schedule-export-reports': { 'task': 'ichnaea.data.tasks.schedule_export_reports', 'schedule': timedelta(seconds=8), 'options': { 'expires': 15 }, }, 'update-cellarea': { 'task': 'ichnaea.data.tasks.update_cellarea', 'schedule': timedelta(seconds=8), 'args': (100, ), 'options': { 'expires': 15 }, }, 'update-cellarea-ocid': { 'task': 'ichnaea.data.tasks.update_cellarea_ocid', 'schedule': timedelta(seconds=9), 'args': (100, ), 'options': { 'expires': 15 }, }, 'update-score': { 'task': 'ichnaea.data.tasks.update_score', 'args': (250, ), 'schedule': timedelta(seconds=9), 'options': { 'expires': 10 }, }, } for shard_id in CellShard.shards().keys(): schedule.update({ 'update-cell-' + shard_id: { 'task': 'ichnaea.data.tasks.update_cell', 'schedule': timedelta(seconds=7), 'args': (500, shard_id), 'options': { 'expires': 10 }, } }) for shard_id in DataMap.shards().keys(): schedule.update({ 'update-datamap-' + shard_id: { 'task': 'ichnaea.data.tasks.update_datamap', 'args': (500, shard_id), 'schedule': timedelta(seconds=14), 'options': { 'expires': 20 }, }, }) for shard_id in WifiShard.shards().keys(): schedule.update({ 'update-wifi-' + shard_id: { 'task': 'ichnaea.data.tasks.update_wifi', 'schedule': timedelta(seconds=6), 'args': (500, shard_id), 'options': { 'expires': 10 }, } }) if 'assets' in sections and app_config.get('assets', 'bucket', None): # only configure tasks if target bucket is configured schedule.update({ 'cell-export-full': { 'task': 'ichnaea.data.tasks.cell_export_full', 'schedule': crontab(hour=0, minute=13), 'options': { 'expires': 39600 }, }, 'cell-export-diff': { 'task': 'ichnaea.data.tasks.cell_export_diff', 'schedule': crontab(minute=3), 'options': { 'expires': 2700 }, }, }) if 'import:ocid' in sections: schedule.update({ 'monitor-ocid-import': { 'task': 'ichnaea.data.tasks.monitor_ocid_import', 'schedule': timedelta(seconds=600), 'options': { 'expires': 570 }, }, 'cell-import-external': { 'task': 'ichnaea.data.tasks.cell_import_external', 'args': (True, ), 'schedule': crontab(minute=52), 'options': { 'expires': 2700 }, }, }) return schedule
def celerybeat_schedule(app_config): """Return the celery beat schedule as a dictionary.""" sections = app_config.sections() schedule = { # Monitoring 'monitor-queue-size': { 'task': 'ichnaea.data.tasks.monitor_queue_size', 'schedule': timedelta(seconds=60), 'options': {'expires': 57}, }, 'monitor-api-users': { 'task': 'ichnaea.data.tasks.monitor_api_users', 'schedule': timedelta(seconds=600), 'options': {'expires': 570}, }, 'monitor-api-key-limits': { 'task': 'ichnaea.data.tasks.monitor_api_key_limits', 'schedule': timedelta(seconds=600), 'options': {'expires': 570}, }, # Statistics 'update-statcounter': { 'task': 'ichnaea.data.tasks.update_statcounter', 'args': (1, ), 'schedule': crontab(minute=3), 'options': {'expires': 2700}, }, 'update-statregion': { 'task': 'ichnaea.data.tasks.update_statregion', 'schedule': timedelta(seconds=3600 * 6), 'options': {'expires': 3600 * 5}, }, # Data Pipeline 'schedule-export-reports': { 'task': 'ichnaea.data.tasks.schedule_export_reports', 'schedule': timedelta(seconds=8), 'options': {'expires': 15}, }, 'update-cellarea': { 'task': 'ichnaea.data.tasks.update_cellarea', 'schedule': timedelta(seconds=8), 'args': (100, ), 'options': {'expires': 15}, }, 'update-cellarea-ocid': { 'task': 'ichnaea.data.tasks.update_cellarea_ocid', 'schedule': timedelta(seconds=9), 'args': (100, ), 'options': {'expires': 15}, }, 'update-score': { 'task': 'ichnaea.data.tasks.update_score', 'args': (250, ), 'schedule': timedelta(seconds=9), 'options': {'expires': 10}, }, } for shard_id in CellShard.shards().keys(): schedule.update({ 'update-cell-' + shard_id: { 'task': 'ichnaea.data.tasks.update_cell', 'schedule': timedelta(seconds=7), 'args': (500, shard_id), 'options': {'expires': 10}, } }) for shard_id in DataMap.shards().keys(): schedule.update({ 'update-datamap-' + shard_id: { 'task': 'ichnaea.data.tasks.update_datamap', 'args': (500, shard_id), 'schedule': timedelta(seconds=14), 'options': {'expires': 20}, }, }) for shard_id in WifiShard.shards().keys(): schedule.update({ 'update-wifi-' + shard_id: { 'task': 'ichnaea.data.tasks.update_wifi', 'schedule': timedelta(seconds=6), 'args': (500, shard_id), 'options': {'expires': 10}, } }) if 'assets' in sections and app_config.get('assets', 'bucket', None): # only configure tasks if target bucket is configured schedule.update({ 'cell-export-full': { 'task': 'ichnaea.data.tasks.cell_export_full', 'schedule': crontab(hour=0, minute=13), 'options': {'expires': 39600}, }, 'cell-export-diff': { 'task': 'ichnaea.data.tasks.cell_export_diff', 'schedule': crontab(minute=3), 'options': {'expires': 2700}, }, }) if 'import:ocid' in sections: schedule.update({ 'monitor-ocid-import': { 'task': 'ichnaea.data.tasks.monitor_ocid_import', 'schedule': timedelta(seconds=600), 'options': {'expires': 570}, }, 'cell-import-external': { 'task': 'ichnaea.data.tasks.cell_import_external', 'args': (True, ), 'schedule': crontab(minute=52), 'options': {'expires': 2700}, }, }) return schedule