factory/apps/bi/tasks.py

21 lines
670 B
Python

from __future__ import absolute_import, unicode_literals
from celery import shared_task
from django.utils import timezone
from apps.bi.models import Dataset, DatasetRecord
from apps.bi.services import exec_dataset
import json
from apps.utils.tools import MyJSONEncoder
@shared_task()
def exec_dataset_and_store(code: str, query: str = ''):
dt = Dataset.objects.get(code=code)
dtr = DatasetRecord()
dtr.timex = timezone.now()
dtr.dataset = dt
squery = {}
if query:
squery = json.loads(query)
dtr.full_sql, dtr.result = exec_dataset(dt, squery)
dtr.result = json.loads(json.dumps(dtr.result, cls=MyJSONEncoder))
dtr.save()