Возникли проблемы с остановкой моего потока Tweepy - PullRequest
0 голосов
/ 15 ноября 2018

Невозможно заставить свой поток выйти, как только я достигну 100 твитов.Я перепробовал много способов.Надеюсь сохранить использование «с открытым».

* Использование цикла while, когда файл открыт, приводит к грязному нежелательному файлу JSON * Текущее использование отсоединения продолжает потоковую передачу после достижения 100, но данные не работают

Отредактировано:

  1. Количество твитов и общее количество твитов было воссоздано с использованием self.
  2. При каждой загрузке данных обновлялось num_tweets: self.num_tweets + = 1.Затем обновите pbar: self.pbar.update (1)
  3. Вне операторов try, если self.num_tweets

Кредит: Крис Кукман

def __init__(self, api=None):
        self.num_tweets = 0
        self.total_tweets = int(input("Number of tweets:"))
        self.pbar = tqdm(total=self.total_tweets)
        self.unsaved = 0
        self.emojis = 0

    def on_data(self, data):
        try:
            portal_1 = creds()
            rawTweets = json.loads(data)
            self.num_tweets += 1
            self.pbar.update(1)
            ...
            ...
        except BaseException as e:
            print(colored("Error on_data: %s", "red") % str(e))
        if self.num_tweets < self.total_tweets:
            return True
        else:
            self.pbar.close()
            return False

1 Ответ

0 голосов
/ 17 ноября 2018

Чтобы выйти из потока с помощью tweepy, вам нужно вернуть false из функции on_status, поэтому если вы измените:

if self.num_tweets < 100:
    return True
    else:
        twitter_stream.disconnect()

Кому:

if self.num_tweets < 100:
    return True
else:
    self.pbar.close() # Closes the instance of the progress bar.
    return False # Closes the stream.

Это должно исправить это. Кроме того, для индикатора выполнения добавьте self.num_tweets при каждом запуске:

self.pbar.update(self.num_tweets)

С обновлением вы добавляете количество твитов каждый раз:

Чирикать 1 | Tweet Count = 's 1 | Индикатор выполнения = 1 (1)

Чирикать 2 | Tweet Count = 's 2 | Индикатор выполнения = 1 + 2 (3)

Чирикать 3 | Tweet Count = 's 3 | Прогресс-бар = 3 + 3 (6)

Исходя из вашего кода, я предполагаю, что вы намерены вместо этого увеличить их, поэтому для этого вам просто нужно изменить его на:

self.pbar.update(1)

Надеюсь, это поможет.

...