##環境
- os : raspbian
- server : apache2
- language : python3.7
##やりたいこと
今、ウェブサイトの入力フォームに文字列を入力してボタンを押すと、サーバーにおいてあるpython実行ファイルannounce.pyが呼び出されて、その文字列を某サイトにとばしてそれを音読した音声ファイル.mp3を手に入れて、それを家のGoogleHomeで再生するというアプリを作っています。
このとき、すでにGoogleHomeが再生中だったとする、それに割り込まないように、今流れている演奏が終わるまで、threadingを回して、待機するようになっています。
ここで問題があって、
サイトで文字列を入力してから、announce.pyが実行し終える、つまりGoogleHomeが音声を再生し終えるまでサイトの表示がアナウンス完了のページに切り替わらないんです。apache2で標準出力をバッファーするようになっているらしい。。私はサイトの表示の切り替えは瞬時に行ってほしいと思っています。
いかがそのannounce.pyです。
python
1#!/usr/bin/python3 2# -*- coding : utf-8 -*- 3 4import cgi 5import AnnounceTools as tools 6import HtmlMaker as hmaker 7import cgitb 8 9cgitb.enable() 10def out(): 11 form=cgi.FieldStorage() 12 sentence=form.getfirst('main')//入力のあった文字列 13 music=form.getfirst('music')//サーバー上の音楽を指定して流す入力もある 14 15 #htmlを吐く 16 hmaker.resultHtml(sentence) 17 return sentence,music 18 19def main(): 20 sentence,music=out() 21 #セリフ吐く 22 tools.Announce(sentence)//pychromecastを使って文字列の音声ファイルを再生 23 #音楽流す 24 if music is not "" or music is not None: 25 tools.execAnnounce('/music/'+str(music)+'.mp3')//音楽のファイルをpychromecastを使って再生(ここで3行前のセリフに割り込まないようにexecAnnounceの中でthreadを回している) 26 27if __name__=='__main__': 28 main()
# 助言をください!!
あなたの回答
tips
プレビュー