Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
global в сочетании с Threading приведут вас в ад…replyed треду? Так, чтобы он мог вносить в него изменения, и чтобы этот список был доступен другим тредам.tweepy.API(auth) типаdef init():
....
return tweepy.API(auth)def run (self):
api=init()class TwiBot(threading.Thread):
replyed=set() # set гарантирует уникальность и проверка in работает быстрее
replyed_lock=threading.Lock()
def run():
....
need_reply=[] # будущий список твитов, на которые нужно ответить.
# захватываем блокировку replyed и быстро проходим по списку твитов
# составляя список тех, на которые нужно ответить
with TwiBot.replyed_lock:
for i in request: #XXX: почему request? response ведь!!!
if i.from_user!='thevar1able' and i.id not in TwiBot.replyed:
need_reply.append(i)
TwiBot.replyed.add(i.id)
# тут блокировка уже снята и другой поток может писать в replyed
# а наш поток может не спеша слать ответы.
for i in need_reply:
...
Tweet('@'+i.from_user+self.answer,i.id)
...
< if len(twit)<=140 and len(twit)>0:Это ж питон, и вас должно было напрячь, что вычисляете одно и то же два раза подряд
> if 0<len(twit)<=140:
Простой Twitter-бот на Python