<div dir="ltr">I'm trying to use sqlalchemy from a twisted application (by running all blocking queries using deferToThread). Is it possible to yield from within the function running in deferToThread? For example:<div><br></div><div><br></div><div><div><font face="monospace, monospace">def threadRunQuery(engine, query):<br></font></div><div><div><font face="monospace, monospace">    conn = engine.connect()</font></div><div><font face="monospace, monospace">    res = conn.execute(query)</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">    while True:</font></div><div><font face="monospace, monospace">        results = res.fetchmany(1000)</font></div><div><font face="monospace, monospace">        if not results:</font></div><div><font face="monospace, monospace">            break</font></div><div><font face="monospace, monospace">        yield results</font></div></div></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">@defer.inlineCallbacks</font></div><div><font face="monospace, monospace">def stream_results():</font></div><div><font face="monospace, monospace">    engine = sqlalchemy.create_engine(...)<br></font></div><div><div><div><font face="monospace, monospace">    query = "select * from table"</font></div><div><font face="monospace, monospace">    result_iter = yield threads.deferToThread(threadRunQuery, engine, query)<br></font></div><div><font face="monospace, monospace">    for results in result_iter:</font></div><div><font face="monospace, monospace">        print results</font></div><div><br></div><div><br></div></div><div>It seems that the thread returns a generator, and so everything within threadRunQuery is actually running on the main reactor thread. Is there anyway to stream back results from a deferToThread?</div><div><br></div><div>Regards</div><div>Naveen Michaud-Agrawal<br></div></div></div>