Бот крутится на LongPolling.
Для разделения доступа к словарю хотя бы на запись воткнул threading.Lock
Проблема не исчезла. Вопросы:
1) Верно ли я понимаю, что при лонг-поллинге каждый запрос выполняется в отдельном потоке и при этом, если Lock определён в том же скрипте, создаёт себе новый Lock?
2) Если да - как этого избежать? То есть можно ли при Long Polling передать в дочерние процессы тот же Lock?
Структура в упрощённом виде:
# -*- coding: utf-8 -*- import telebot import shelve from threading import Lock bot = telebot.TeleBot(config.token) lock = Lock() @bot.message_handler(commands=['stats']) def stats(message): chat_id=str(message.chat.id) lock.acquire() res=shelve.open(res_name,writeback=True) #какие-то команды res.close() lock.release() if __name__ == '__main__': bot.polling(none_stop=True)