2012-05-21 21 views
5

GAEのpython開発環境(dev_appserver.pyを使用)でmp4 /ビデオを提供しようとしていますが、これまでのところブラウザで再生できませんでした。GAE Pythonの開発サーバー(dev_appserver.py)からムービーファイルを提供するにはどうすればよいですか?

開発サーバーで 'Broken Pipe'エラーが発生し、プロダクション環境(Googleのサーバー上)で再生できたため、ブラウザの並列リクエストによって問題が発生している可能性があります。 (私の理解が正しいとすれば、dev_appserver.pyはシングルスレッドであり、並列要求を処理できません)

Chromeの '--disable-preconnect'オプションを試しましたが、問題は解決しませんでした。

対策はありますか? あなたのアドバイスは本当に感謝しています。

編集:ムービーファイルは静的リソースとして保存されており、直接アクセスしようとしました(ビデオタグを使用していません)。

[バージョン情報]

  • OS:Ubuntuの12.04 LTE
  • ブラウザ:クローム19.0.1084.46、Firefoxの12.0
  • GAE:パイソン - 1.6.5、
  • のPython:2.7.3

[エラーログ]

INFO  2012-05-21 07:35:04,575 dev_appserver.py:2891] "GET /static/test.mp4 HTTP/1.1" 200 - 
---------------------------------------- 
Exception happened during processing of request from ('127.0.0.1', 36240) 
Traceback (most recent call last): 
    File "/usr/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock 
    self.process_request(request, client_address) 
    File "/usr/lib/python2.7/SocketServer.py", line 310, in process_request 
    self.finish_request(request, client_address) 
    File "/usr/lib/python2.7/SocketServer.py", line 323, in finish_request 
    self.RequestHandlerClass(request, client_address, self) 
    File "/home/chikashi/Development/google_appengine/google/appengine/tools/dev_appserver.py", line 2579, in __init__ 
    BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, *args, **kwargs) 
    File "/usr/lib/python2.7/SocketServer.py", line 640, in __init__ 
    self.finish() 
    File "/usr/lib/python2.7/SocketServer.py", line 693, in finish 
    self.wfile.flush() 
    File "/usr/lib/python2.7/socket.py", line 303, in flush 
    self._sock.sendall(view[write_offset:write_offset+buffer_size]) 
error: [Errno 32] Broken pipe 
---------------------------------------- 
+0

あなたのソースコードを表示できますか? blobstoredownloadhandlerを使用していますか? –

+0

情報が不足して申し訳ありません。ムービーファイルは静的リソースとして保存されているため、blobstoreddownloadhandlerを使用していません。 –

+0

はい、dev_appserver.pyはシングルスレッドです。 – allyourcode

答えて

1

非常に長い操作(ムービーの配信など)は、完了するまでスレッドを縛ります。開発サーバーはシングルスレッドなので、その唯一のワーカースレッドは、次の要求を処理する前にダウンロードが完了するまで待つ必要があります。

いずれの場合でも、生産App Engine環境にはこの問題はなく、あまりにも大きすぎない限り(私は限界を覚えていません)、喜んでファイルを提供します。

他のサーバーからムービーファイルを提供することも考えられます。使用する帯域幅に応じて、App Engineよりも安価なホスティングソリューションがあります(たとえそのどれもクールではないとしても);

+0

答えてくれてありがとう、rbanffy! Google ChromeとFirefox(私はそれらをテストしました)がマルチ接続を使用して映画をダウンロードすることを明確にしたいと思いますか? 私のテストケースでは、これらのブラウザはムービーファイル(ムービーファイルの指定されたURL)のみをダウンロードする必要があります。 したがって、マルチ接続を使用する必要はないかもしれません。 本当にありがとうございます! –

+1

最大ファイルサイズは1 MBです – Bobby

関連する問題