Plumber: ヒントとコツのドキュメントに「ランダムポート」のトリックを追加する

作成日 2020年07月31日  ·  6コメント  ·  ソース: rstudio/plumber

問題

私のチームは最近、AzureVMにデプロイされたRstudioサーバーの使用を開始しました。 最近、配管工APIをテストしようとして問題が発生しました。 Rstudioの[RunAPI]ボタンをクリックすると、グローバルオプションで特定のポートを指定していない限り、配管工は3kから10kの間でランダムに選択されたポートでAPIを提供します。 Windowsアダプティブファイアウォールでポート転送のルールを設定できるとエンジニアから言われましたが、一度に1つずつ指定する必要があります。 :泣く:。 配管工が選択するポートの範囲を設定して、使用をより狭い範囲のポートに制限できるようにしたいと思います。

考えられる解決策

考えられる解決策は、 getRandomPortを変更して、デフォルトで3kから10kの範囲になる前に、getOption( "plumber.port_range")が設定されているかどうかを確認することだと思います。

novice help wanted

最も参考になるコメント

Pro製品との統合の問題については知らないかもしれませんが、なぜこれが機能しないのですか?

# plumber.R
options("plumber.port" = httpuv::randomPort(min = 4000, max = 7000, n = 100))

### define the rest of your plumber router...

または、配管と実行の時間差が大きすぎて、同時APIを実行するときに問題が発生しますか?


それ以外の場合は、 4000:7000などのポート値の範囲を受け入れることにします。 しかし、私たちがそれを助けることができれば、私はむしろそれを変えたくありません。

全てのコメント6件

こんにちは仲間のアクチュアリー。 ええ、オプションは良さそうです。おそらくgetRandomPortにもパラメーターを追加して、関数を公開します。 当面は、findPort関数を複製して、runメソッドまたは配管工のポートオプションにフィードすることができます。

options(plumber.port = XYZ)ます。 この値は、 plumber.Rファイル内で、または$run()を呼び出す前に設定できます。

@schloerke 、一度に1つずつポートを指定することは、潜在的なストップギャップソリューションです。 より多くのチームをrstudioサーバーに取り込むと、ポートの使用を調整する必要がありますが、ポートが個々の配管工ファイルにハードコードされていない場合は、比較的小さなプールで十分です。

@meztez週末にPRの仕事を始めるかもしれないと思っていました。 2つの別々のオプションplumber.port_range.minとplumber.port_range.maxを使用するか、2つの要素を持つ単一のアイテムplumber.port_rangeを使用するかについての規則はありますか?

別のオプションは必要ないと思います。現在のオプションで範囲を処理する必要があります。

options("plumber.port" = 4000:7000)

rstudioサーバーから直接配管工APIを実行する場合は、正しく構成されている場合はすべてがrstudioサーバーポートにプロキシされる必要があるため、問題にはなりません。

私たちはあなたと同様の設定をしており、ネットワークファイアウォールで許可されている出力ポートは1つだけですが、多数のAPIを同時に実行しても問題はありません。

Pro製品との統合の問題については知らないかもしれませんが、なぜこれが機能しないのですか?

# plumber.R
options("plumber.port" = httpuv::randomPort(min = 4000, max = 7000, n = 100))

### define the rest of your plumber router...

または、配管と実行の時間差が大きすぎて、同時APIを実行するときに問題が発生しますか?


それ以外の場合は、 4000:7000などのポート値の範囲を受け入れることにします。 しかし、私たちがそれを助けることができれば、私はむしろそれを変えたくありません。

機能リクエストに関連するキーワードの問題を検索しようとしましたが、#569で説明したのと同じ問題が発生していると思います。

また、私は特定の制限範囲がhttpuv :: randomPortは良い解決策になる使用して、@schloerkeの提案を必要とした多くの状況を考えます。 したがって、{plumber}チームが他の使用例を見つけない限り、この機能リクエストを閉じて、@schloerkeスニペットを含める新しい問題を追加することをお勧めします。

このページは役に立ちましたか?
0 / 5 - 0 評価