私はtornado2.3(python 2.7.3)を使用しており、postgresql(9.2.1)データベースに対して大量のクエリを実行しています。これは完了するのに約8秒かかり、コールバック(momokoコネクタを使用してpostgresを使用)を使用してページをクエリ結果で段階的に更新できるかどうか疑問に思いました。竜巻のデモフォルダでFacebookの例を見つけましたが、更新するにはクリックが必要です。ただし、クエリ結果が取得されたときにレンダリング用のUIモジュールを呼び出すことを望んでいました。
現在の(未完成の)コードは次のようになります。
results = OrderedDict()
cursor = yield gen.Task(self.db.execute, 'select location, string_of_words from source;')
for verse in cursor.fetchall():
queries = {}
id = 0
for word in verse[4].split(' '):
queries[id] = ['select worddetailsbyword(%s)',(word,)]
id += 1
cursors = yield gen.Task(self.db.batch, queries)
for key,cursor in cursors.items():
worddata = {}
if verse[0] not in results.keys():
results[verse[0]] = []
results[verse[0]].append(cursor.fetchone())
for loc, words in results.items():
self.write("<h2>%s</h2>" % loc)
for word in words:
self.write("<div>%s</div>"%word[0])
これらすべてが完了するのを待ってからテンプレートでレンダリングする代わりに、コールバックを実装し、各クエリの完了をそのコールバックにヒットさせてWebページを更新することはできますか?