0

ファイルを読んだり、ウェブサイトを更新したり、さらに行を読んだり、サイトを更新したりしたい...ロジックは以下の通りですが、うまくいきません。ログファイルの最初の行のみを表示して停止します。「return render_to_response」を繰り返す方法はありますか?

出力をログファイルに追加するリモート python スクリプトを呼び出す #django ビュー

proc = subprocess.Popen([program, branch, service, version, nodelist])
logfile = 'text.log'
fh = open(logfile, 'r')

while proc.poll() == None:
  where = fh.tell()
  line = fh.read()
  if not line:
     time.sleep(1)
     fh.seek(where,os.SEEK_SET)
  else:
     output = cgi.escape(line)
     output = line.replace('\n\r', '<br>')
     return render_to_response('hostinfo/deployservices.html', {'response': output})

ご協力ありがとうございました。

4

3 に答える 3

1

関数をジェネレーターにすることで、実際にこれを行うことができます。つまり、「yield」を使用して各行を返します。

ただし、render to response を使用するのではなく、直接応答を作成する必要があります。

于 2012-08-01T07:13:27.320 に答える
0

車輪の再発明の代わりに、django_logtail

于 2012-08-01T01:15:08.343 に答える
0

render_to_response最初のバッチを Web サイトにレンダリングして停止します。次に、次のバッチを送信する場合、Web サイトは何らかの方法でこのビューを再度呼び出す必要があります。また、その時点から 2 番目のバッチを読み取ることができるように、ログ ファイルのどこにいたかを記録しておく必要があります。
render_to_response への 2 番目の投稿が最初の投稿を上書きしないように、テンプレートに何らかのロジックがあると仮定し
ます.

于 2012-07-31T23:07:47.010 に答える