Приложение Flask с пандами работает по-разному в режиме разработки или с Gunicorn - PullRequest
0 голосов
/ 08 ноября 2019

Я должен сравнить два температурных фрейма и передать его пользователю с помощью колбы. Мои данные находятся в базе данных MariaDb.

Итак, запрос Get, который я получаю, - это две сравниваемые температуры: start_date, end_date и значение сравнения

Когда я получаю GET-запрос в колбеЯ создаю первый кадр данных для первой температуры и создаю второй кадр данных для второй температуры </p> <pre><code>import flask import pandas as pd from sqlalchemy import create_engine, text # engine creation engine = create_engine("mysql+pymysql://user:pass@localhost/db", echo=True) conn_sql_alchemy = engine.connect() # function to create dataframe for def create_dataframe(obj, start_date, end_date): # with obj, start_date and end_date I create a request like this one sql_sp_query = text("select timestamp, value from db.tldata where pointId = (select Id from db.device_pointList where DeviceId = ( select Id from db.device where device_instance =200) and ObjectId = 9 and object='trendLog') and timestamp between '2019-10-30 00:00:00' and '2019-10-31 23:59:59'") #creation of dataframe pd_datas = pd.read_sql_query(sql_sp_query, conn_sql_alchemy, index_col="timestamp") # return dataframe return pd_datas # flask route @app.route('/analyse_co/<object_sp>/<object_ai>/<start_date>/<end_date>/<difference>') def analyse_co(object_sp, object_ai, start_date, end_date, difference): print('creation of dataframe for object_ai') pd_ai_datas = create_dataframe(object_ai, start_date, end_date) print(pd_ai_datas) print('creation of dataframe for object_sp') pd_sp_datas = create_dataframe(object_sp, start_date, end_date) print(pd_sp_datas) return 'finish'

Когда я пробую свое приложение в режиме разработки, я получаю ожидаемый результат, я получаюдва моих кадра данных напечатаны на консоли, а на веб-странице см. «Готово»

Результат на консоли: creation of dataframe for object_ai 2019-11-08 08:34:32,113 INFO sqlalchemy.engine.base.Engine select timestamp, value from db.tldata where pointId = (select Id from db.device_pointList where DeviceId = ( select Id from db.device where device_instance =200) and ObjectId = 7 and object='trendLog') and timestamp between '2019-10-30 00:00:00' and '2019-10-31 23:59:59' 2019-11-08 08:34:32,114 INFO sqlalchemy.engine.base.Engine {} timestamp value 2019-10-30 00:00:00 10.475613 2019-10-30 00:15:00 8.461939 2019-10-30 00:30:00 5.507755 2019-10-30 00:45:00 8.461939 2019-10-30 01:00:00 5.507755 ... ... 2019-10-31 22:45:00 10.641429 2019-10-31 23:00:00 1.556020 2019-10-31 23:15:00 11.016837 2019-10-31 23:30:00 8.576020 2019-10-31 23:45:00 9.379898 [192 rows x 1 columns] creation of dataframe for object_sp 2019-11-08 08:34:32,222 INFO sqlalchemy.engine.base.Engine select timestamp, value from db.tldata where pointId = (select Id from db.device_pointList where DeviceId = ( select Id from db.device where device_instance =200) and ObjectId = 9 and object='trendLog') and timestamp between '2019-10-30 00:00:00' and '2019-10-31 23:59:59' 2019-11-08 08:34:32,223 INFO sqlalchemy.engine.base.Engine {} timestamp value 2019-10-30 00:00:00 14.265137 2019-10-30 00:15:00 15.733887 2019-10-30 00:30:00 17.308594 2019-10-30 00:45:00 18.942383 2019-10-30 01:00:00 20.517090 ... ... 2019-10-31 22:45:00 03.228516 2019-10-31 23:00:00 04.716309 2019-10-31 23:15:00 06.372070 2019-10-31 23:30:00 07.834961 2019-10-31 23:45:00 09.363281 [192 rows x 1 columns] 10.23.1.41 - - [08/Nov/2019 08:34:32] "GET /analyse_co/200.tl9/200.tl7/2019-10-30/2019-10-31/2 HTTP/1.1" 200 -

Когда я пробую свое приложение, используя nginx и gunicorn в HTTPS, в журнале я просто вижусоздание моего первого информационного кадра, второй игнорируется, и у меня нет ошибки на моей веб-странице, я вижу, закончить ...

Nov 8 08:35:04 rockpro64 gunicorn[24608]: creation of dataframe for object_ai Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-11-08 08:35:04,050 INFO sqlalchemy.engine.base.Engine select timestamp, value from db.tldata where pointId = (select Id from db.device_pointList where DeviceId = ( select Id from db.device where device_instance =200) and ObjectId = 7 and object='trendLog') and timestamp between '2019-10-30 00:00:00' and '2019-10-31 23:59:59' Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-11-08 08:35:04,050 INFO sqlalchemy.engine.base.Engine {} Nov 8 08:35:04 rockpro64 gunicorn[24608]: value Nov 8 08:35:04 rockpro64 gunicorn[24608]: timestamp Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-10-30 00:00:00 10.475613 Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-10-30 00:15:00 8.461939 Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-10-30 00:30:00 5.507755 Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-10-30 00:45:00 8.461939 Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-10-30 01:00:00 5.507755 Nov 8 08:35:04 rockpro64 gunicorn[24608]: ... ... Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-10-31 22:45:00 10.641429 Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-10-31 23:00:00 1.556020 Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-10-31 23:15:00 11.016837 Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-10-31 23:30:00 8.576020 Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-10-31 23:45:00 9.379898 Nov 8 08:35:04 rockpro64 gunicorn[24608]: [192 rows x 1 columns] Nov 8 08:35:04 rockpro64 gunicorn[24608]: creation of dataframe for object_sp Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-11-08 08:35:04,187 INFO sqlalchemy.engine.base.Engine select timestamp, value from db.tldata where pointId = (select Id from db.device_pointList where DeviceId = ( select Id from db.device where device_instance =200) and ObjectId = 9 and object='trendLog') and timestamp between '2019-10-30 00:00:00' and '2019-10-31 23:59:59' Nov 8 08:35:04 rockpro64 gunicorn[24608]: 2019-11-08 08:35:04,187 INFO sqlalchemy.engine.base.Engine {}

...