~bbl07/schooltool/schooltool

« back to all changes in this revision

Viewing changes to src/schooltool/task/celery.py

  • Committer: Gediminas Paulauskas
  • Date: 2014-04-10 20:41:49 UTC
  • mfrom: (3720.1.15 schooltool-2.6)
  • Revision ID: menesis@pov.lt-20140410204149-u6nh1v6xxiw0k81h
Celery 3 support

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
#
18
18
from __future__ import absolute_import
19
19
 
20
 
import celery.app.abstract
 
20
import sys
 
21
 
21
22
import celery.app.defaults
22
23
import celery.loaders.default
 
24
try:
 
25
    # Celery 2
 
26
    from celery.app.abstract import configurated as StartStopStep
 
27
    logger = None
 
28
except:
 
29
    # Celery 3
 
30
    from celery.bootsteps import StartStopStep
 
31
    from celery.utils.log import worker_logger as logger
23
32
 
24
33
import zope.configuration.config
25
34
import zope.configuration.xmlconfig
47
56
ACTIVE_MACHINERY = None
48
57
 
49
58
 
50
 
class ConfiguratedSchoolToolMachinery(celery.app.abstract.configurated,
 
59
class ConfiguratedSchoolToolMachinery(StartStopStep,
51
60
                                      SchoolToolMachinery):
52
61
 
53
 
    config = celery.app.abstract.from_config()
54
62
    _configured = False
55
 
    celery_app = None
 
63
    app = None
56
64
    db = None
57
65
    options = None
58
66
 
59
67
    def __init__(self, celery_app, **kwargs):
60
68
        self.app = celery_app
61
 
        self.setup_defaults(kwargs, namespace='schooltool')
 
69
        self.logger = logger or self.app.log.get_default_logger()
62
70
 
63
71
    def loadOptions(self):
64
72
        options = self.Options()
65
 
        if self.config:
66
 
            options.config_file = self.config
 
73
        options.config_file = self.app.conf.SCHOOLTOOL_CONFIG
 
74
        if not options.config_file:
 
75
            self.logger.error('No configuration file given')
 
76
            sys.exit(1)
67
77
        options.config, handler = self.readConfig(options.config_file)
68
78
        if options.config.database.config.storage is None:
69
79
            raise Exception('No ZODB storage configured')
90
100
        if self.db is not None:
91
101
            return # already running
92
102
        if not self._configured:
93
 
            # XXX: this goes to WARNING, should go to INFO
94
 
            print 'Configuring SchoolTool machinery.'
 
103
            self.logger.info('SchoolTool: Loading configuration')
95
104
            self.options = self.loadOptions()
96
105
            self.configure(self.options)
97
106
            self._configured = True
107
116
 
108
117
    def configure(self, options):
109
118
        self.options = options
110
 
        print options.config.report_server_definition
111
119
        self.configureComponents(
112
120
            options,
113
121
            site_zcml=options.config.report_server_definition)