こんにちはコミュニティ、
Shinyproxyでダッシュ(最新ビルド)アプリをデプロイしようとしています。 Shinyproxyで機能するよりも構築された最後の成功したダッシュ/ダッシュ依存関係は次のようです:
ダッシュ1.1.1
dash-bootstrap-components 0.7.1
ダッシュコアコンポーネント1.1.1
dash-html-components 1.0.0
ダッシュレンダラー1.0.0
ダッシュテーブル4.1.0
私は運がなくて起動するためにいくつかの修正を試みましたが、どちらもDash> 1.1.0では機能しません。 これまでに試した既知のソリューションを追加します。
方法1:
app = dash.Dash(__name__, requests_pathname_prefix='/app_direct/dash-demo/')
方法2:
app = dash.Dash(external_stylesheets=[dbc.themes.BOOTSTRAP],
suppress_callback_exceptions=True,
prevent_initial_callbacks=True,
requests_pathname_prefix='/app_direct/<appname>')
#app.config.update({
# # remove the default of '/'
# 'routes_pathname_prefix': '',
# # remove the default of '/'
# 'requests_pathname_prefix': ''
# })
__name__
を含めたり、 external_stylesheets
を除外したりしました
また、リクエストをconfig.update
内に移動しようとしましたが成功しませんでした:
app.config.update({
# remove the default of '/'
'routes_pathname_prefix': '',
# remove the default of '/'
'requests_pathname_prefix': '/app_direct/<appname>/'
})
参考までに、これらのソリューションでは、常にこのコンポーネントが読み込まれることはありません。
[email protected]_6_0m1598451932.8.7.min.js
[email protected]_6_0m1598451932.13.0.min.js
[email protected]_6_0m1598451932.13.0.min.js
[email protected]_6_0m1598451932.7.2.min.js
dash_bootstrap_components.v0_10_3m1598451933.min.js
bundle.v4_9_0m1598451932.js
dash_html_components.v1_0_3m1598451932.min.js
dash_core_components.v1_10_2m1598451932.min.js
dash_core_components-shared.v1_10_2m1598451932.js
dash_renderer.v1_6_0m1598451932.min.js
[email protected]_6_0m1598451932.13.0.min.js
[email protected]_6_0m1598451932.7.2.min.js
dash_bootstrap_components.v0_10_3m1598451933.min.js
bundle.v4_9_0m1598451932.js
dash_html_components.v1_0_3m1598451932.min.js
dash_core_components.v1_10_2m1598451932.min.js
dash_core_components-shared.v1_10_2m1598451932.js
dash_renderer.v1_6_0m1598451932.min.js
この問題についてサポートをいただければ幸いです。
更新:Dash1.17.0とShinyProxy2.4.1がうまくいったようです。
必要なもの:
server = flask.Flask(__name__)
app = dash.Dash(
__name__,
external_stylesheets=[dbc.themes.BOOTSTRAP],
suppress_callback_exceptions=True,
server = server,
requests_pathname_prefix='/app_direct/<appname>/'
)
Dash1.17.0とShinyProxy2.4.1ではこの修正を再現できません。 Dashデモは、古いバージョンのDashで正常に機能しますが、上記のソリューションをDashデモにどのように実装する必要があるかはわかりません。
https://github.com/openanalytics/shinyproxy-dash-demo
詳細を教えてください。
更新:Dash1.17.0とShinyProxy2.4.1がうまくいったようです。
必要なもの:app = dash.Dash( __name__, external_stylesheets=[dbc.themes.BOOTSTRAP], suppress_callback_exceptions=True, server = server, requests_pathname_prefix='/app_direct/<appname>/' )
こんにちは@jtpoirier
Dashアプリケーションを作成するときに、いくつかのパラメーターを指定できます。 DashをShinyProxyで正しく機能させるには、同じ値で2つのパラメーターを指定する必要があります。 これらのパラメータは次のとおりです。
routes_pathname_prefix
requests_pathname_prefix
これらのパラメーターの値は次のようになります。
/app_direct/<appname>/
appname
をDashを使用するアプリのIDに置き換える必要があります。 これを明確にするために、ここに完全な例があります:
次のapplication.yml
ファイルがあるとします。
proxy:
title: Open Analytics Shiny Proxy
logo-url: https://www.openanalytics.eu/shinyproxy/logo.png
landing-page: /
heartbeat-rate: 10000
heartbeat-timeout: 60000
port: 8080
authentication: simple
admin-groups: scientists
users:
- name: jack
password: password
groups: scientists
- name: jeff
password: password
groups: mathematicians
docker:
cert-path: /home/none
url: http://localhost:2375
port-range-start: 20000
specs:
- id: dash-demo # Note: this is the id of the application
display-name: Dash Demo Application
port: 8050
container-cmd: ["python", "app.py"]
container-image: openanalytics/shinyproxy-dash-demo
この場合、アプリケーションのIDはdash-demo
であるため、パラメーターの値は次のようになります。
/app_direct/dash-demo/
したがって、ダッシュアプリケーションの上部には、おそらく次のPythonコードがあります。
app = dash.Dash(
__name__,
external_stylesheets=[dbc.themes.BOOTSTRAP],
suppress_callback_exceptions=True,
server = server,
requests_pathname_prefix='/app_direct/dash-demo/',
routes_pathname_prefix='/app_direct/dash-demo/'
)
これが明確で役立つことを願っています。 幸運を!
こんにちは@jfrubioz
Dashアプリの操作を簡単にするために、次のShinyProxyリリースに含まれる変更を加えました。 そのリリース以降、すべてのShinyProxyアプリには、回避策で指定した値を基本的に含む環境変数SHINYPROXY_PUBLIC_PATH
が含まれるようになります。 上記の例では、したがって/app_direct/dash-demo/
になります。
利点は、DashアプリケーションをShinyProxyで使用されるアプリ名に依存しないようにできることです。
ところで、この値を任意の環境変数にバインドして、アプリをShinyProxyからより独立させる方法も提供します。
迅速な対応に感謝します。 計画された改善が役立つようです。
上記のコードは、いくつかの理由により、最新バージョンのDashでdash-demoを正常に起動しないようです。 「サーバー」はdash-demoapp.pyで定義されていないため、実行されません。 その行が削除されると、アプリは以下のようにコマンドラインで起動しますが、コンテナーはWebインターフェイスを介して時間内に応答しません。 明確にするために、ダッシュデモはダッシュ≤1.1のこの環境で正常に機能します。
Running on http://0.0.0.0:8050/app_direct/dash-demo/
Debugger PIN: 394-772-284
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
Running on http://0.0.0.0:8050/app_direct/dash-demo/
Debugger PIN: 807-835-959
@jtpoirier
はい、サーバーへの参照が含まれていないことに気付きました。 server = flask.Flask(__name__)
行を含むように更新を更新しました。 フラスコをモジュールにインポートしてください。
@LEDfanが説明したように、このソリューションは、「requests_pathname_prefix」に「/ app_direct / dash-demo /」を追加するだけです。 ただし、「routes_pathname_prefix」にも入力する必要はないと思います。 したがって、Pythonコードが次のようになっていることを確認します。
app = dash.Dash(
__name__,
external_stylesheets=[dbc.themes.BOOTSTRAP],
suppress_callback_exceptions=True,
server = flask.Flask(__name__),
requests_pathname_prefix='/app_direct/dash-demo/',
)
if __name__ == '__main__':
app.run_server(
#make sure you have the right host address
#host = '0.0.0.0',
)
最新のダッシュデモリリースから、提案されているように、行 'app = dash.Dash()'を以下のコードに置き換えました。 この場合も、サーバーはコマンドラインで実行されますが、shinyproxyから起動するとタイムアウトになります。 application.ymlファイルでアプリのIDが「dash-demo」であることを確認しました。
import flask
app = dash.Dash(
__name__,
suppress_callback_exceptions=True,
server=flask.Flask(__name__),
requests_pathname_prefix='/app_direct/dash-demo/'
)
if __name__ == '__main__':
app.run_server(debug=True, host = '0.0.0.0')
このソリューションは> 1.1専用であり、すべてのバージョンのdashの一般的なソリューションではないことがわかりました。
この修正をダッシュデモと2番目のより複雑なアプリケーションで再現しました。 ご協力ありがとうございます。
こんにちは@jtpoirier 、あなたが問題を解決することができて素晴らしいです!
@jfrubiozは、各コンテナがSHINYPROXY_PUBLIC_PATH
環境を持つShinyProxy2.5.0をリリースしました。 デモでわかるように、新しいDashバージョンのサポートが簡単になっているはずです。
私たちにソリューションを提供していただきありがとうございます!
これは現在修正されているので、この問題を解決します。 いつものように、何か問題が発生した場合は、新しい問題を開いてください。
最も参考になるコメント
このソリューションは> 1.1専用であり、すべてのバージョンのdashの一般的なソリューションではないことがわかりました。
この修正をダッシュデモと2番目のより複雑なアプリケーションで再現しました。 ご協力ありがとうございます。