mancelery.py 3.47 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# Copyright 2014 Budapest University of Technology and Economics (BME IK)
#
# This file is part of CIRCLE Cloud.
#
# CIRCLE is free software: you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation, either version 3 of the License, or (at your option)
# any later version.
#
# CIRCLE is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with CIRCLE.  If not, see <http://www.gnu.org/licenses/>.

18
from celery import Celery
19
from datetime import timedelta
20
from kombu import Queue, Exchange
Guba Sándor committed
21
from os import getenv
22

Guba Sándor committed
23
HOSTNAME = "localhost"
24
CACHE_URI = getenv("CACHE_URI", "pylibmc://127.0.0.1:11211/")
25

26
celery = Celery('manager',
Guba Sándor committed
27
                broker=getenv("AMQP_URI"),
28 29
                include=['vm.tasks.local_tasks',
                         'vm.tasks.local_periodic_tasks',
Bach Dániel committed
30
                         'vm.tasks.local_agent_tasks',
31
                         'storage.tasks.local_tasks',
32
                         'storage.tasks.periodic_tasks',
33 34
                         'firewall.tasks.local_tasks',
                         'monitor.tasks.local_periodic_tasks',
35
                         'dashboard.tasks.local_periodic_tasks',
36
                         ])
37 38

celery.conf.update(
39 40
    CELERY_RESULT_BACKEND='cache',
    CELERY_CACHE_BACKEND=CACHE_URI,
Őry Máté committed
41
    CELERY_TASK_RESULT_EXPIRES=300,
42
    CELERY_QUEUES=(
43 44
        Queue(HOSTNAME + '.man', Exchange('manager', type='direct'),
              routing_key="manager"),
45 46 47 48
        Queue(HOSTNAME + '.monitor', Exchange('monitor', type='direct'),
              routing_key="monitor"),
    ),
    CELERYBEAT_SCHEDULE={
49
        'vm.update_domain_states': {
50 51 52 53
            'task': 'vm.tasks.local_periodic_tasks.update_domain_states',
            'schedule': timedelta(seconds=10),
            'options': {'queue': 'localhost.man'}
        },
54 55 56 57 58
        'vm.garbage_collector': {
            'task': 'vm.tasks.local_periodic_tasks.garbage_collector',
            'schedule': timedelta(minutes=10),
            'options': {'queue': 'localhost.man'}
        },
59 60 61 62 63
        'storage.periodic_tasks': {
            'task': 'storage.tasks.periodic_tasks.garbage_collector',
            'schedule': timedelta(hours=1),
            'options': {'queue': 'localhost.man'}
        },
64
        'dashboard.send_email_notifications': {
65 66 67 68 69
            'task': 'dashboard.tasks.local_periodic_tasks.'
            'send_email_notifications',
            'schedule': timedelta(hours=24),
            'options': {'queue': 'localhost.man'}
        },
70 71 72
        'monitor.measure_response_time': {
            'task': 'monitor.tasks.local_periodic_tasks.'
                    'measure_response_time',
73
            'schedule': timedelta(seconds=30),
74 75
            'options': {'queue': 'localhost.man'}
        },
Kálmán Viktor committed
76 77
        'monitor.check_celery_queues': {
            'task': 'monitor.tasks.local_periodic_tasks.'
78
                    'check_celery_queues',
79
            'schedule': timedelta(seconds=60),
80 81 82 83 84
            'options': {'queue': 'localhost.man'}
        },
        'monitor.instance_per_template': {
            'task': 'monitor.tasks.local_periodic_tasks.'
                    'instance_per_template',
85
            'schedule': timedelta(seconds=30),
Kálmán Viktor committed
86 87
            'options': {'queue': 'localhost.man'}
        },
88 89
    }

90
)