Здраствуйте у меня проблема со стримингом данных с гугл спредшита на телеграм бот
import pandas as pd
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import telebot
import threading
import multiprocessing
PORT = int(os.environ.get('PORT', '8443'))
TOKEN = "TOKEN"
bot = telebot.TeleBot("TOKEN")
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive']
creds = ServiceAccountCredentials.from_json_keyfile_name('delivery-302112-f683f6060657.json', scope)
client = gspread.authorize(creds)
# GET Spread SHEET Values
sh = client.open('FLEET')
coordinates = []
arrive = []
unit = []
def infi():
# threading.Timer(20, infi).start()
# time.sleep(15)
sheet2 = sh.worksheet("LOCATION")
coordinates_1 = sheet2.col_values(5)
arrive_1 = sheet2.col_values(6)
unit_1 = sheet2.col_values(1)
coordinates.append(coordinates_1)
for i, n, z in zip(coordinates_1, arrive_1, unit_1):
coordinates.append(i)
arrive.append(n)
unit.append(z)
infi()
# CREATING DICTIONARY
data_dict = {"COORDINATES": pd.Series(coordinates),
'UNIT': pd.Series(unit),
"ARRIVE" : pd.Series(arrive)
}
# print(data_dict)
df = pd.DataFrame(data_dict, columns=["UNIT", "COORDINATES", "ARRIVE"])
# print(df['ARRIVE'])
# print(f'DF INFO: {df.info()}, \nUNIT COLUMNS{df["column_new"]}')
unit1 = df['UNIT']
coordinates1 = df["COORDINATES"]
num1 = unit1[:16]
num2 = unit1[16:]
# # print(unit)
#
def value(type):
unique_index = pd.Index(unit1)
m = unique_index.get_loc(type)
number = unit1[m]
info1 = coordinates1[m]
final = info1
return final
# #
markup = telebot.types.ReplyKeyboardMarkup(row_width=3)
for i,n in zip(num1,num2):
txt = str(i)
mxt = str(n)
markup.row(txt,mxt)
@bot.message_handler(commands=['start'])
def start_message(message):
bot.send_message(message.chat.id, 'Hello U Wrote Me /start', reply_markup=markup)
@bot.message_handler(content_types=['text'])
def send_text(message):
response = message.text.lower()
text = value(response)
if message.text.lower() == str(response):
bot.send_message(message.chat.id, str(text))
elif message.text.lower() != '':
bot.send_message(message.chat.id, 'NaN')
if __name__ == "__main__":
bot.polling(none_stop=True)
Суть бота, на выбор даються идинтефикационные номера сотрудников, при выборе ИД бот должен давать данные их координаты и их статус( со спредшита гугла которые постоянно обновляються) Проблема в том что программа берет один раз статичные данные как дф и не обновляет, я попыталя использовать мультитрединг но все всего стало намного запутанее