Есть бот, написанный на Python, библиотека Telebot, LongPolling метод. Бот используется для приема показаний ЖКХ. При входе в бота запрашивается лицевой счет, затем телефон, идет поиск по базе, если соответствие найдено, то авторизация проходит и дальше появляется меню с возможностью передачи показаний. Так вот, если несколько человек пользуются ботом одновременно, то все значения в переменных смешиваются. Как реализовать параллельную работу бота? Вот кусок кода с проверкой лицевого счета
def liccheck(message):
global licabon, flat, idlic, idhome
licabon = str(message.text)
conn = pyodbc.connect('DSN=Base;UID=1111;PWD=1111')
cursor = conn.cursor()
if is_number(licabon):
query = """SELECT LIC
FROM TENANT
WHERE LIC=? """
args = (licabon)
try:
cursor.execute(query, args)
except:
msg2 = bot.send_message(message.chat.id,
"Лицевой счет <b>не найден.</b>\nПроверьте <b>правильнность ввода</b> и отправьте "
"<b>номер ЛС снова.</b>\n", parse_mode='html')
bot.register_next_step_handler(msg2, liccheck)
else:
lic_check = cursor.fetchone()
conn.commit()
if lic_check is None:
msg1 = bot.send_message(message.chat.id,
"Лицевой счет <b>не найден.</b>\nПроверьте <b>правильнность ввода</b> и отправьте "
"<b>номер ЛС снова.</b>\n", parse_mode='html')
bot.register_next_step_handler(msg1, liccheck)
else:
if licabon == str(lic_check[0]):
msg = bot.send_message(message.chat.id,
"Лицевой счет " + str(
licabon) + " найден." + "\n\n<b><i>Отправьте номер телефона, который привязан к вашему ЛС, для "
"авторизации.</i></b>\n\nВы можете "
"поделиться номером, <b>нажав на кнопку ниже</b>, "
"либо написать свой номер в <b>ответном "
"сообщении.</b> \n\n<b>Внимание!</b>\nВвод номера "
"начинайте с <b>7</b>, без пробелов.\n\nЧтобы вернуться назад "
"нажмите сюда: /back.",
reply_markup=keyboard, parse_mode='html')
bot.register_next_step_handler(msg, auth)
conn = pyodbc.connect('DSN=Base;UID=1111.;PWD=1111')
cursor = conn.cursor()
query = """SELECT idflat
FROM TENANT
WHERE LIC=? """
args = (licabon)
cursor.execute(query, args)
flat = cursor.fetchone()
flat = str(flat).replace('(', '').replace(',', '').replace(')', '').replace("'", '')
query = """SELECT idlic
FROM TENANT
WHERE LIC=? """
args = (licabon)
cursor.execute(query, args)
idlic = cursor.fetchone()
idlic = str(idlic[0]).replace('(', '').replace(',', '').replace(')', '').replace("'", '')
query = """SELECT idhome FROM TENANT WHERE LIC=? """
args = (licabon)
cursor.execute(query, args)
idhome = cursor.fetchone()
idhome = str(idhome[0]).replace('(', '').replace(',', '').replace(')', '').replace("'", '')
else:
msg7 = bot.send_message(message.chat.id,
"Лицевой счет <b>не найден.</b>\n\nПроверьте <b>правильнность ввода</b> и отправьте "
"<b>номер ЛС снова.</b>\n", parse_mode='html')
bot.register_next_step_handler(msg7, liccheck)