Esto está relacionado con esta publicación , pero la solución no funciona.
Tengo autenticación de SSO que pasa un encabezado de solicitud con un nombre de usuario. En una aplicación de Flask, puedo recuperar el nombre de usuario usando Flask.request.headers['username']. En Dash me sale un error del servidor. Aquí está la aplicación Dash: está usando gunicorn.
import dash from dash import html import plotly.graph_objects as go from dash import dcc from dash.dependencies import Input, Output import flask from flask import request server = flask.Flask(__name__) # define flask app.server app = dash.Dash(__name__, serve_locally=False, server=server) username = request.headers['username'] greeting = "Hello " + username app.layout = html.Div(children=[ html.H1(children=greeting), html.Div(children=''' Dash: A web application framework for Python. '''), dcc.Graph( id='example-graph', figure={ 'data': [ {'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'SF'}, {'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Montréal'}, ], 'layout': { 'title': 'Dash Data Visualization' } } ) ]) if __name__ == '__main__': app.run_server()Cualquier ayuda sería muy apreciada.
Solo puede acceder al objeto de request desde dentro de un contexto de solicitud. En la terminología de Dash, eso significa desde dentro de una devolución de llamada . Aquí hay un pequeño ejemplo,
from dash import html, Input, Output, Dash from flask import request app = Dash(__name__) app.layout = html.Div(children=[ html.Div(id="greeting"), html.Div(id="dummy") # dummy element to trigger callback on page load ]) @app.callback(Output("greeting", "children"), Input("dummy", "children")) def say_hello(_): host = request.headers['host'] # host should always be there return f"Hello from {host}!" if __name__ == '__main__': app.run_server()