Как изменить поток в tweepy, если хэштег изменился?

У меня возникла ситуация, когда я запускаю трансляцию tweepy с хэштегом по умолчанию, затем программа получает очередь и меняет хэштег, но мой вопрос заключается в том, как применить этот новый хэштег к уже запущенной трансляции tweepy?

Для большей ясности приведу пример:

    hashtag = 'number_1'

    auth = t_auth()
    self.stream = tweepy.streaming.Stream(auth,CustomStreamListener())
    self.stream.filter(follow=None, track=[hashtag])   

Хорошо, приведенный выше код будет прослушивать хэштег 'number_1'. Теперь представьте, что я получил очередь с другим хэштегом:

    hashtag = 'Different_hashtag'

Итак, как заставить мой self.stream.filter(follow=None, track=[hashtag] начать слушать новый хэштег?


person Vor    schedule 03.05.2013    source источник
comment
Вы пытались позвонить self.stream.disconnect() и снова позвонить self.stream.filter(follow=None, track=[hashtag])? Похоже, это единственный способ.   -  person alecxe    schedule 06.05.2013
comment
Звучит разумно, но куда мне это поместить? потому что как только я вызываю stream.filter(), он все блокирует, и код после этого не будет выполняться.   -  person Vor    schedule 06.05.2013
comment
Где-то в вашем CustomStreamListener я думаю. Выберите подходящий метод и переопределите его: см. github.com/tweepy/ tweepy/blob/master/tweepy/streaming.py#L20. Кажется, это должно быть on_status или on_data.   -  person alecxe    schedule 06.05.2013


Ответы (1)


Как указано в комментариях @alecxe, вы можете отключить поток от одного из методов обратного вызова, либо вызвав stream.disconnect(), либо вернув False

Другой вариант — вызвать stream.filter с помощью async=True. Это будет прослушивать твиты асинхронно, позволяя вам вызывать stream.disconnect() и stream.filter() из вашего основного кода, когда вы получаете другой хэштег.

person Aaron Hill    schedule 13.03.2014