21 lines
		
	
	
		
			670 B
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			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()
 |