MozDef/alerts/celeryconfig.py

63 строки
1.7 KiB
Python

from celery import Celery
from lib.config import ALERTS, LOGGING, RABBITMQ
from logging.config import dictConfig
print ALERTS
# Alert files to include
alerts_include = []
for alert in ALERTS.keys():
alerts_include.append('.'.join((alert).split('.')[:-1]))
alerts_include = list(set(alerts_include))
print alerts_include
BROKER_URL = 'amqp://{0}:{1}@{2}:{3}//'.format(
RABBITMQ['mquser'],
RABBITMQ['mqpassword'],
RABBITMQ['mqserver'],
RABBITMQ['mqport'])
CELERY_DISABLE_RATE_LIMITS = True
CELERYD_CONCURRENCY = 1
CELERY_IGNORE_RESULT = True
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_DEFAULT_QUEUE = 'celery-default'
CELERY_QUEUES = {
'celery-default': {
"exchange": "celery-default",
"binding_key": "celery-default",
},
}
CELERYBEAT_SCHEDULE = {}
# Register frequency of the tasks in the scheduler
for alert in ALERTS.keys():
CELERYBEAT_SCHEDULE[alert] = {
'task': alert,
'schedule': ALERTS[alert]['schedule'],
'options': {'queue': 'celery-default', "exchange": "celery-default"},
}
# add optional parameters:
if 'args' in ALERTS[alert].keys():
CELERYBEAT_SCHEDULE[alert]['args']=ALERTS[alert]['args']
if 'kwargs' in ALERTS[alert].keys():
CELERYBEAT_SCHEDULE[alert]['kwargs']=ALERTS[alert]['kwargs']
# Load logging config
dictConfig(LOGGING)
# print CELERYBEAT_SCHEDULE
# Optional configuration, see the application user guide.
# app.conf.update(
# CELERY_TASK_RESULT_EXPIRES=3600,
# )
app = Celery('alerts',
include=alerts_include)
app.config_from_object('celeryconfig', force=True)
if __name__ == '__main__':
app.start()