Я пытаюсь выяснить, как правильно закрыть асинхронный поток tweepy.
Модуль tweedy streaming можно найти здесь.
Я запускаю поток следующим образом:
stream = Stream(auth, listener)
stream.filter(track=['keyword'], async=True)
При закрытии приложения я пытаюсь закрыть поток так же просто, как:
stream.disconnect()
Этот метод, похоже, работает по назначению, но, похоже, он имеет одну проблему: поток потока по-прежнему находится в середине цикла (ожидание/обработка твитов) и не будет убит до следующего цикла, поэтому, когда поток получает чириканье даже после закрытия приложения, он по-прежнему пытается вызвать объект-слушатель (это можно увидеть с помощью простого синтаксиса печати на объекте слушателя). Я не уверен, что это плохо или если его можно просто игнорировать.
У меня есть 2 вопроса:
- Это лучший способ закрыть поток или я должен использовать другой подход?
- Не следует ли создать асинхронный поток в качестве потока демона?