問題タブ [plack]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
542 参照

perl - Test::WWW::Mechanize::PSGI がポートを使用するのはなぜですか?

次のようなコードがあります。

ただし、が呼び出されるとすぐにget_ok()、次の警告が表示されます。

はい、そのポートを別の用途に使用しています。Test::WWW::Mechanize::PSGI のドキュメントから:

このモジュールを使用すると、PSGI Web アプリケーションをテストできますが、サーバーや HTTP 要求を発行する必要はありません。代わりに、HTTP 要求オブジェクトを直接 PSGI に渡します。

したがって、理論的にはポートを指定する必要はありませんが、上記の警告が表示され、フェッチされたページは 500 を返します (ブラウザーでは正常に動作します)。私は何が欠けていますか?

  • Test::WWW::Mechanize::PSGI バージョン 0.35
  • Plack バージョン 1.0030
  • Catalyst バージョン 5.90051

に変更MyApp->runすると、次のようになりMyApp->psgi_appます。

このエラーは、次の方法で再現できます。

0 投票する
1 に答える
315 参照

multithreading - Plack リクエスト ハンドラをバックグラウンドで実行するにはどうすればよいですか?

を使用して実行する単純な Plack アプリ ( Plack::App::GitHub::WebHookのようなもの) がありますplackup。リクエスト ハンドラーで長時間の操作を実行すると、現在、操作が完了するまでアプリが後続のリクエストに応答しなくなります。他のリクエストをブロックせずにバックグラウンドで操作を実行するにはどうすればよいですか? フォローアップの質問ですが、そのバックグラウンド キューで最大 1 つのジョブを実行し続けるにはどうすればよいですか?

私はlibdispatchに慣れているので、次のようなものが好きです:

0 投票する
2 に答える
414 参照

perl - Catalyst で Plack::Middleware 互換の例外を使用すると、ログ出力が欠落する

私のCatalystプロジェクトでは、コマンドラインアプリケーションとMoose互換性のある独自の例外タイプを使用しています。Catalyst

Catalyst REST インターフェイスのクライアントにエラー メッセージを提供するために、codehttp ステータス コードを例外クラスの一部として提供するサブルーチンを実装しました。Plack::Middlewareこのように、のポッドのドキュメントに記載されているように使用したいと思いPlack::Middleware::HTTPExceptionsます。

すべて正常に動作します。例外は、私が望む方法でクライアントに返されます。

私の問題は次のとおりです。例外をスローすると、それがミドルウェアによって捕捉され、ロギング ( ) が失われ、の Web サーバーの perl スクリプト出力Log::Log4perlにトレースもエラーも見つかりません。Catalyst

例外クラスによってカプセル化されていないがまれな文字列 ( などdie "BOOM!") であるエラーをスローするたびに、ログ出力が書き込まれ、エラーが文書化されます (明らかに、エラーはキャッチされCatalyst、再スローされません)。

Catalyst例外をミドルウェアに再スローする必要がある場合でも、ログ要求を保持するように指示するにはどうすればよいですか?

0 投票する
2 に答える
850 参照

perl - perl plack アプリで非ブロッキング応答を実装するにはどうすればよいですか?

私はTwiggy::Server(plackアプリを意味する)を使用して、perlベースのWebサーバーを作成しようとしています。データを生成し、それをクライアント Web ページに返すための JSON 文字列に変換する、おそらく時間のかかるサブルーチンを実行して、一部のデータに対する要求 (Web ページでの ajax 呼び出しからの要求) に応答したいと考えています。

ここで、私のサーバーの簡易テスト バージョンを確認できます: http://pastebin.com/iNaDTVwL この例は、現在の実装で直面している問題を示しています。AnyEvent::ForkManager物事の非ブロッキング部分を行うために使用すると、「大きな」json 応答が切り捨てられます。

このドキュメントは私の質問に完全に答えます (そして、私がやろうとしていることをよりよく説明しています): https://github.com/jjn1056/Example-PlackStreamingAndNonblocking ... 終了した場合。AnyEvent::ForkManager少しハックのように見えるものを使用する代わりに、ノンブロッキングを行う「適切な」方法が欠けているだけです。