Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 8, 2016 09:07:22

Eshvaikovsky
Зарегистрирован: 2016-10-08
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Long polling + Lock

Пишу бота для Телеграм, в котором требуется, среди прочего, читать и писать в словарь (выбрал Shelves).

Бот крутится на 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)

Отредактировано Eshvaikovsky (Окт. 8, 2016 09:22:53)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version