python - permissions issue when running bokeh server from supervisor -
i have web application employs bokeh plotting engine. have created interactive plotting app based of of "stocks example"
i have running on development machine. on application server, running supervisor (supervisorctl).
i using redis backend.
i having permissions issue based on "driving" various applications. when try access application on server, traceback shows directory creation permission problem.
traceback (most recent call last): ... flask / wsgi stuff ... file "/home/webdev/mydevelopment/git/ers_data_app/env/lib/python2.7/site-packages/flask_login.py", line 755, in decorated_view return func(*args, **kwargs) file "/home/webdev/mydevelopment/git/ers_data_app/webapp/mod_performance/plotting_views.py", line 53, in data_viz bs = make_bokeh_session() file "/home/webdev/mydevelopment/git/ers_data_app/webapp/mod_performance/plotting_views.py", line 27, in make_bokeh_session b_session.login(un, pw) file "/home/webdev/mydevelopment/git/ers_data_app/env/lib/python2.7/site-packages/bokeh/session.py", line 244, in login self.save() file "/home/webdev/mydevelopment/git/ers_data_app/env/lib/python2.7/site-packages/bokeh/session.py", line 180, in save data = self.load_dict() file "/home/webdev/mydevelopment/git/ers_data_app/env/lib/python2.7/site-packages/bokeh/session.py", line 151, in load_dict configfile = self.configfile file "/home/webdev/mydevelopment/git/ers_data_app/env/lib/python2.7/site-packages/bokeh/session.py", line 148, in configfile return join(self.configdir, "config.json") file "/home/webdev/mydevelopment/git/ers_data_app/env/lib/python2.7/site-packages/bokeh/session.py", line 138, in configdir makedirs(bokehdir) file "/home/webdev/mydevelopment/git/ers_data_app/env/lib64/python2.7/os.py", line 157, in makedirs mkdir(name, mode) oserror: [errno 13] permission denied: '/root/.bokeh' i placed print statement in flask view show current user (using os.getegid())
from bokeh.session import session bsession ... def make_bokeh_session(): print 'bokeh session group!!!!!!!! {}'.format(os.getegid()) print 'bokeh session user!!!!!!!! {}'.format(os.path.expanduser('~')) un = current_user.username pw = current_app.config['bokeh_session_pw'] b_session = bsession(root_url=bokeh_url, load_from_config=false) try: b_session.login(un, pw) except runtimeerror e: b_session.register(un, pw) b_session.login(un, pw) output_server('ers_plots') return b_session the print statement gives shows group id of 1000 (my webdev user runs everything), although os.expanduser('~') shows user root.
see below supervisor configuration snippets.
[program:bokehservergo] directory = /home/webdev/mydevelopment/git/ers_data_app/webapp/mod_performance command = /home/webdev/mydevelopment/git/ers_data_app/env/bin/bokeh-server --script=plotting_app.py --backend=redis --no-start-redis -m user=webdev ... the webapp run uwsgi emperor
[program:uwsgi_emperor_go] command = /usr/bin/uwsgi --emperor /etc/uwsgi/emperor.ini user=webdev ... and redis runner
[program:redisgo] command=/usr/bin/redis-server /etc/redis.conf user=webdev ... the relavent code bokeh/session.py (makedirs throwing traceback)
@property def configdir(self): """ filename our config stored. """ if self._configdir: return self._configdir bokehdir = join(expanduser("~"), ".bokeh") if not exists(bokehdir): makedirs(bokehdir) return bokehdir how can fix permission issue bokeh may deployed on server? tried adding user=webdev various supervisord program blocks no avail. have since removed user=webdev supervisor.conf config redis
i ended making own app_document decorator (see stock_app example) allowed me create multi-user bokeh session , pass in config directory, since that's error being thrown.
Comments
Post a Comment