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 | from django.apps import AppConfig | 2 | from django.apps import AppConfig |
3 | 3 | ||
4 | +from .utils.data import register_tasks | ||
4 | from .utils.signals import connect_signal, register_signal | 5 | from .utils.signals import connect_signal, register_signal |
5 | 6 | ||
6 | 7 | ||
@@ -10,3 +11,5 @@ class PluginAppConfig(AppConfig): | @@ -10,3 +11,5 @@ class PluginAppConfig(AppConfig): | ||
10 | def ready(self): | 11 | def ready(self): |
11 | register_signal() | 12 | register_signal() |
12 | connect_signal() | 13 | connect_signal() |
14 | + | ||
15 | + register_tasks() |
@@ -0,0 +1,40 @@ | @@ -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,7 +15,7 @@ CELERTBEAT_LOG_FILE="/var/log/celery/beat.log" | ||
15 | CELERYBEAT_PID_FILE="/var/run/celery/beat.pid" | 15 | CELERYBEAT_PID_FILE="/var/run/celery/beat.pid" |
16 | 16 | ||
17 | CELERYBEAT_USER="vagrant" | 17 | CELERYBEAT_USER="vagrant" |
18 | -CELERYBEAT_GROUP="CELERYBEAT_GROUP" | 18 | +CELERYBEAT_GROUP="vagrant" |
19 | 19 | ||
20 | # If enabled pid and log directories will be created if missing, | 20 | # If enabled pid and log directories will be created if missing, |
21 | # and owned by the userid/group configured. | 21 | # and owned by the userid/group configured. |
vagrant/provision.sh
@@ -45,6 +45,9 @@ colab-admin loaddata /vagrant/tests/test_data.json | @@ -45,6 +45,9 @@ colab-admin loaddata /vagrant/tests/test_data.json | ||
45 | # Init.d Celery files | 45 | # Init.d Celery files |
46 | sudo cp $basedir/vagrant/misc/etc/init.d/celery* /etc/init.d/ | 46 | sudo cp $basedir/vagrant/misc/etc/init.d/celery* /etc/init.d/ |
47 | sudo cp $basedir/vagrant/misc/etc/default/celery* /etc/default/ | 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 | sudo service celeryd start | 51 | sudo service celeryd start |
49 | sudo service celerybeat start | 52 | sudo service celerybeat start |
50 | 53 |