Я использую функцию-генератор из модуля запросов в QT-приложении, почти так же, как в примере с потоками запросов:
import json
import requests
def get_stream():
r = requests.get('http://httpbin.org/stream/20', stream=True)
for line in r.iter_lines():
if line:
yield json.loads(line)
def consume_stream():
for message in get_stream():
#do something
Однако, когда нет входящего ответа (т.е. нерегулярно входящие твиты из Twitters Streaming API), генератор get_stream
блокирует метод consume_stream
.
Это может произойти в любой ситуации, когда генератор не дает немедленного результата, но может ждать входящих сообщений и т.д., и, следовательно, блокирует пользователя.
Есть ли какой-либо шаблон на Python, где вы можете использовать генератор неблокирующим способом, то есть если генератор дает результат, обрабатывает его, в противном случае делает что-то еще до тех пор, пока не появятся следующие результаты?