2

2 つのスクリプトを実行しています。1 つはポート :80 で、もう 1 つはポート :81 です。一部のユーザーは、ポート :81 のサーバーで問題が発生しているため、次のような回避策を実装しようとしています。

ほとんどのユーザーにとって問題なく機能する古い方法です。

  • AngularJS アプリはリクエストを行いますexample.com:81/getpdf/1
  • subprocess.PopenFlask サーバーは、2 つの個別の呼び出しと.wait()メソッドを使用して、PhantomJS と ImageMagick を使用して PNG および PDF ファイルを生成します。
  • Flask の を使用send_file()すると、PDF がユーザーに送り返され、ダウンロードが開始されます。

この問題に対する私の回避策:

  • AngularJS はリクエストを行いますexample.com/getpdf/1
  • Flask サーバー ( :80) は新しい GET リクエストr = requests.get(url_with_port_81)を作成し、古い AngularJS リクエストを偽って PNG/PDF を作成します
  • を使用する代わりにsend_file()、生成された PDF のパスを返すようになりました
  • 私は返すsend_file(r.text)

さて、私の回避策を使用して、PNG/PDF を作成するために実行するサブプロセスが何らかの形でクラッシュします。私はsudo pkill pythonそうする必要があり、そうする場合にのみ、サーバー上のフォルダーにデータのない PNG を取得しています。

基本的に、PhantomJS は実行されましたが、データ (html/css のみで、Flask サーバーから取得する必要がある重要なものはありません) をロードしておらず、クラッシュします。これはどのように可能ですか?ブラウザが を使用して行うリクエストを偽造しているだけですrequests.getか、それともここで何かを認識していませんか?

subprocess.Popennon-blockingだと思ったので、PNG/PDF を埋めるためにデータのリクエストに答えることができますか?

4

1 に答える 1