Как оптимизировать время выполнения представления django, чтобы оно не занимало время на выполнение

Мне нужна помощь, мое представление django занимает много времени для запуска Всего у меня 6 представлений и каждое представление занимает 6 минут ответов Я использую pandas dataframe для извлечения xml данных, затем я применяю формулу множественных вычислений, медленнее всего загружается домашняя страница home.html, потому что на ее выполнение уходит 45 минут

решение я прочитал:

- использовать мультипроцессинг для параллельного выполнения каждого представления, но я не знаю, как это сделать

что я искал:

-django-q, к сожалению, это для sql-запросов, мой код не содержит sql-запросов,

Есть ли у вас какие-либо идеи относительно процесса, которому я должен следовать

my home_view django

def home_view(request):
    month = ''.join(request.GET.getlist('id_mois'))
    this_region = ''.join(request.GET.getlist('id_region'))

    # --------------------REVENU-------------------- :
    from REVENU.revenu import details_revenu
    init_revenu = initializing_revenu()
    ref_details_revenu = details_revenu(init_revenu[0], init_revenu[1], this_region, month)

    # ---------------------SUBSCRIBER------------------:
    from SUBSCRIBER.subscriber import subscriber_details
    init_subscriber = initializing_subscriber()
    ref_subscriber = subscriber_details(init_subscriber[0], init_subscriber[1], this_region, month)

    # -----------------ANIMATEUR--------------------:
    from ANIMATEUR.animateur import function_animateur
    init_animateur = initializing_animateur()
    ref_animateur = function_animateur(init_animateur[0], init_animateur[1], this_region)

    # -----------------MVOLA--------------------:
    from MVOLA.mvola import mvola_details
    init_mvola = initializing_mvola()
    mvola = mvola_details(init_mvola[0], init_mvola[1], this_region, month)

    context = {#....some context}
    return render(request, 'home.html', context)

здесь возврат, абонент, мвола, аниматор занимает 6мин каждый раз на выполнение

отредактировано

каждая функция имеет файл инициализации в соответствии с xml

def initializing_subscriber() :
XML_SUBSCRIBER = urllib.request.urlopen('http://reference/subscriber/')
COL_SUBSCRIBER = ['region','localite','ville','techno','parc_global','activation','churn','date_']
cols_numeric = ['parc_global','activation','churn']
cols_string = ['region','localite','ville','techno','date_']
df_subscriber = parse_XML(XML_SUBSCRIBER,COL_SUBSCRIBER)

df_subscriber['mois']= df_subscriber['date_'].str.split('-').str[1]
df_subscriber['annee']=df_subscriber['date_'].str.split('-').str[0]



df_subscriber[cols_numeric] =df_subscriber[cols_numeric].apply(pd.to_numeric)
d1 = dict.fromkeys(cols_numeric, 'sum')
d2 = dict.fromkeys(cols_string, 'first')
d = {**d1, **d2}

return  df_subscriber,d

если я возьму случай абонента, то функция будет :

def subscriber_details(df_subscriber,d,region_subscriber,mois_subscriber):
    this_year_last_month = df_subscriber.loc[
(df_subscriber['region'] == REGION) &
(df_subscriber['annee'] == ANNEE) &
(df_subscriber['mois'] == LAST_MONTH)]

df_last_month = this_year_last_month
df_last_month= df_last_month.groupby('localite', as_index=False).agg(d)
df['RGS(0)'] = df_last_month['parc_global']
df['RGS(1)'] = df['RGS(0)'] + df['activation'] + df['churn']

df['M net add'] = df_last_month['activation'] - df_last_month['churn']

df['Net Add'] = df['activation']-df['churn']

df['%Net add MoM'] = round((df['Net Add'] - df['M net add'])/df['M net add'] * 100,1)

df['Net add gap'] = round(df['Net Add'] - (df_last_month['activation']- df_last_month['churn']))

somme_rgs_1 = df['RGS(1)'].sum()

df['poids']= round(df['RGS(1)']/somme_rgs_1*100,1)
return df
Вернуться на верх