Что эквивалентно обратному вызову da sh в plotly js - PullRequest
0 голосов
/ 03 августа 2020

Мне пришлось создать приборную панель, так что da sh казалось довольно простым. Но я столкнулся с множеством проблем с интеграцией с flask или django.

Поэтому мне пришлось перестроить приборную панель с django framework с plotly. js, используя plotly da sh @app.callback() очень быстро обновлял графики. Чтобы поиздеваться над подобным поведением, я попытался использовать ajax в django и плотно. js. Несмотря на то, что работа выполняется с использованием ajax, я вижу, что есть отставание в производительности, для визуализации обновленного графика требуется 3-4 секунды.

Есть ли лучший или эффективный способ достичь аналогичной производительности da sh обратные вызовы в django / ajax? Просто потому, что каждый раз, когда мне приходится читать csv-файл во время вызова ajax, это мешает моей работе?

пример кода серверной части для ajaxcall

def itemsAjax(request):

    if request.is_ajax():
        
        itemsList = request.POST.get('items')
        
        #itemsList = ast.literal_eval(itemsList)
        #itemsList = [n.strip() for n in itemsList]
        itemsList=itemsList.split(',')
        
        daterange = request.POST.get('daterange').split('-')
        franchise = request.POST.get('franchise')
        startDate = dt.strptime(daterange[0].strip(),'%m/%d/%Y')
        endDate = dt.strptime(daterange[1].strip(),'%m/%d/%Y')
        df = at.readData()
        flag = ut.determineFlag(startDate,endDate)
        df = at.filter_df_daterange(df,startDate,endDate)
        itemTrend_df = at.getDataForItemsTrend(df,startDate,endDate,flag)
        
        
        
        itemTrend_plt = [{'type':'scatter',
                            'x' : itemTrend_df[itemTrend_df['S2PName']==item]['S2BillDate'].tolist(),
                            'y' : itemTrend_df[itemTrend_df['S2PName']==item]['totSale'].tolist(),
                            #'text' : itemTrend_df[itemTrend_df['S2PName']==item]['Hover'],
                            'mode' : 'markers+lines',
                            'name' : item
        }for item in itemsList]

        return JsonResponse({'itemTrend_plt':itemTrend_plt})

    else:
        return HttpResponse(' Not authorised!')
...