Commit 7ba7f4e6be1ee5ae0b58cec0878af1abfc260363
1 parent
4a4ddcb1
Exists in
master
and in
29 other branches
Importing data asynchronously
Signed-off-by: Sergio Oliveira <sergio@tracy.com.br>
Showing
6 changed files
with
60 additions
and
1 deletions
Show diff stats
colab/plugins/apps.py
1 | 1 | |
2 | 2 | from django.apps import AppConfig |
3 | 3 | |
4 | +from .utils.data import register_tasks | |
4 | 5 | from .utils.signals import connect_signal, register_signal |
5 | 6 | |
6 | 7 | |
... | ... | @@ -10,3 +11,5 @@ class PluginAppConfig(AppConfig): |
10 | 11 | def ready(self): |
11 | 12 | register_signal() |
12 | 13 | connect_signal() |
14 | + | |
15 | + register_tasks() | ... | ... |
... | ... | @@ -0,0 +1,40 @@ |
1 | +#!/usr/bin/env python | |
2 | + | |
3 | +import importlib | |
4 | + | |
5 | +from django.conf import settings | |
6 | + | |
7 | +from colab.celery import app | |
8 | +from proxy_data_api import ProxyDataAPI | |
9 | + | |
10 | + | |
11 | +TASKS = set() | |
12 | + | |
13 | + | |
14 | +def register_tasks(): | |
15 | + | |
16 | + global TASKS | |
17 | + | |
18 | + for app_name in settings.INSTALLED_APPS: | |
19 | + | |
20 | + try: | |
21 | + module = importlib.import_module('{}.data_api'.format(app_name)) | |
22 | + except ImportError as e: | |
23 | + continue | |
24 | + | |
25 | + for item_name in dir(module): | |
26 | + item = getattr(module, item_name) | |
27 | + if item is ProxyDataAPI: | |
28 | + continue | |
29 | + | |
30 | + if callable(getattr(item, 'fetch_data', None)): | |
31 | + instance = item() | |
32 | + task = app.task(bind=True)(instance.fetch_data) | |
33 | + TASKS.add(task) | |
34 | + | |
35 | + return TASKS | |
36 | + | |
37 | + | |
38 | +def data_import(self): | |
39 | + for task in TASKS: | |
40 | + task.delay() | ... | ... |
colab/plugins/utils/proxy_data_api.py
vagrant/misc/etc/default/celerybeat
... | ... | @@ -15,7 +15,7 @@ CELERTBEAT_LOG_FILE="/var/log/celery/beat.log" |
15 | 15 | CELERYBEAT_PID_FILE="/var/run/celery/beat.pid" |
16 | 16 | |
17 | 17 | CELERYBEAT_USER="vagrant" |
18 | -CELERYBEAT_GROUP="CELERYBEAT_GROUP" | |
18 | +CELERYBEAT_GROUP="vagrant" | |
19 | 19 | |
20 | 20 | # If enabled pid and log directories will be created if missing, |
21 | 21 | # and owned by the userid/group configured. | ... | ... |
vagrant/provision.sh
... | ... | @@ -45,6 +45,9 @@ colab-admin loaddata /vagrant/tests/test_data.json |
45 | 45 | # Init.d Celery files |
46 | 46 | sudo cp $basedir/vagrant/misc/etc/init.d/celery* /etc/init.d/ |
47 | 47 | sudo cp $basedir/vagrant/misc/etc/default/celery* /etc/default/ |
48 | +sudo service celeryd stop || echo | |
49 | +sudo service celerybeat stop || echo | |
50 | +sleep 2 | |
48 | 51 | sudo service celeryd start |
49 | 52 | sudo service celerybeat start |
50 | 53 | ... | ... |