Миграция на Bokeh> 1.0: отсутствует параметр 'arguments' в server_session - PullRequest
0 голосов
/ 24 января 2019

Справочная информация:

У меня есть устаревший производственный код, который встраивает приложения Bokeh в Django.Цель состоит в обслуживании пользовательских панелей мониторинга.Код Bokeh обращается к username аргументам из запроса, согласно документации .

Приложения были построены с использованием bokeh 0.13.

На стороне Django, username аргумент передается как в примере ниже:

Пример фрагмента из views.py:

from bokeh.util import session_id
from bokeh.embed import server_session

def get_bokeh_script(user, url_suffix):
    bokeh_session_id = session_id.generate_session_id()
    bokeh_url = "https://" + settings.BOKEH_HOST + ":" + settings.BOKEH_PORT + url_suffix
    script = server_session(url=bokeh_url, session_id=bokeh_session_id, resources=None, arguments={"username":user.username})
    return script



def my_view1(request):
    url_suffix = "/my_suffix"
    script = get_bokeh_script(request.user, url_suffix)
    return render(request,'dashboard/index.html',{'script':script})

Текущий сценарий:

Мне нужно перенести код в bokeh >1.0, особенно для метода on_session_destroyed объекта Document().

Однако, похоже, что параметр arguments server_session был удален, согласно руководству по миграции (см. также обсуждение здесь ).

Вопрос:

Есть ли обходной путь, который позволит мне передать username в качестве аргумента от Джанго к Боке, вверсия 1.0.*?

1 Ответ

0 голосов
/ 29 марта 2019

Для Bokeh v1.0.4 вы можете попробовать:

script = server_document(url = bokeh_url, 
                         relative_urls = False, 
                         resources = 'default', 
                         arguments={"bokeh-session-id": bokeh_session_id, 
                                    "username": user.username } )

Возвращает скрипт и допускает параметр arguments.

Другой вариант - передать пользователя разными способами, например, push_session(), который также допускает аргументы и создает ClientSession

Если вы передаете пользователя для проверки подлинности, тогда вы можете pip install flask-user и сделать:

@login_required
def my_view1(request):
    url_suffix = "/my_suffix"
    script = get_bokeh_script(request.user, url_suffix)
    return render(request,'dashboard/index.html',{'script':script})
...