Commit | Line | Data |
---|---|---|
1e48a830 | 1 | # GNU MediaGoblin -- federated, autonomous media hosting |
cf29e8a8 | 2 | # Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. |
1e48a830 CAW |
3 | # |
4 | # This program is free software: you can redistribute it and/or modify | |
5 | # it under the terms of the GNU Affero General Public License as published by | |
6 | # the Free Software Foundation, either version 3 of the License, or | |
7 | # (at your option) any later version. | |
8 | # | |
9 | # This program is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | # GNU Affero General Public License for more details. | |
13 | # | |
14 | # You should have received a copy of the GNU Affero General Public License | |
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
16 | ||
17 | import os | |
18 | ||
924c586b | 19 | from mediagoblin import app, mg_globals |
073b61fe | 20 | from mediagoblin.init.celery import setup_celery_from_config |
1e48a830 CAW |
21 | |
22 | ||
e893094a | 23 | OUR_MODULENAME = __name__ |
1e48a830 CAW |
24 | |
25 | ||
9ea5c28b CAW |
26 | def setup_self(check_environ_for_conf=True, module_name=OUR_MODULENAME, |
27 | default_conf_file='mediagoblin.ini'): | |
1e48a830 CAW |
28 | """ |
29 | Transform this module into a celery config module by reading the | |
30 | mediagoblin config file. Set the environment variable | |
924c586b | 31 | MEDIAGOBLIN_CONFIG to specify where this config file is. |
1e48a830 | 32 | |
924c586b | 33 | By default it defaults to 'mediagoblin.ini'. |
1e48a830 | 34 | |
924c586b CAW |
35 | Note that if celery_setup_elsewhere is set in your config file, |
36 | this simply won't work. | |
1e48a830 | 37 | """ |
eaca7874 CAW |
38 | if check_environ_for_conf: |
39 | mgoblin_conf_file = os.path.abspath( | |
9ea5c28b | 40 | os.environ.get('MEDIAGOBLIN_CONFIG', default_conf_file)) |
eaca7874 | 41 | else: |
9ea5c28b | 42 | mgoblin_conf_file = default_conf_file |
eaca7874 | 43 | |
1e48a830 CAW |
44 | if not os.path.exists(mgoblin_conf_file): |
45 | raise IOError( | |
46 | "MEDIAGOBLIN_CONFIG not set or file does not exist") | |
243c3843 | 47 | |
924c586b CAW |
48 | # By setting the environment variable here we should ensure that |
49 | # this is the module that gets set up. | |
eaca7874 | 50 | os.environ['CELERY_CONFIG_MODULE'] = module_name |
924c586b | 51 | app.MediaGoblinApp(mgoblin_conf_file, setup_celery=False) |
9ea5c28b | 52 | |
1e48a830 | 53 | setup_celery_from_config( |
924c586b | 54 | mg_globals.app_config, mg_globals.global_config, |
eaca7874 | 55 | settings_module=module_name, |
1e48a830 CAW |
56 | set_environ=False) |
57 | ||
1e48a830 CAW |
58 | |
59 | if os.environ['CELERY_CONFIG_MODULE'] == OUR_MODULENAME: | |
60 | setup_self() |