Почему только функции возвращаются из функции в Heroku? - PullRequest
0 голосов
/ 07 февраля 2020

Я использую Flask и Pandas для создания простого api. Но ниже приведена основная функция, которая только возвращает Dates из результата на heroku.

def positions_data(days=3):
    result = {}
    url_dates = result['Dates'] = get_dates(days)

    derivative_dic = defaultdict(dict)

    for date in url_dates:
        df = get_dataframe(date)
#         print(df)
        df = df.applymap(remove_comma)
#         print(df)
        if df.shape[0] != 0:
            extract_fii_data(df,derivative_dic)
        else:
            url_dates.remove(date)

    result['Dates'] = [datetime.strptime(x,'%d%m%Y').strftime('%d-%b-%Y') for x in url_dates]
    result.update(derivative_dic)

    return result 

get_dataframe делает http запрос на получение файла csv , затем я использую эти данные и обновляю результат и возвращаю его. это нормально работает на локальном хосте, но когда я развернул его на heroku, он только возвращает ключ Dates из словаря результатов.

Две функции для получения фреймов данных

def get_dataframe(date:str):
    url = 'https://archives.nseindia.com/content/nsccl/fao_participant_oi_{0}.csv'.format(date)
    print(url)
    csv_data = get_url_data(url)
    csv_col_names = ["Type","FIL","FIS","FSL","FSS","OILC","OILP","OISC","OISP","OSLC","OSLP","OSSC","OSSP","TL","TS"]
    if csv_data != 'NA':
        df  = pd.read_csv(StringIO(csv_data),index_col='Type',skiprows=1,header=0,names=csv_col_names)
    else:
        print("empty data frame")
        df = pd.DataFrame({})
    return df 

def get_url_data(url:str):
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"}
    data = requests.get(url,headers=headers)
    if data.status_code == 200 and data.headers['Content-Type'] == 'text/csv':
        output = data.text 
    else:
        output = "NA"
    return output
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...