Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make redis dependency of bokeh-server optional #59

Closed
ilanschnell opened this issue Sep 5, 2013 · 7 comments
Closed

Make redis dependency of bokeh-server optional #59

ilanschnell opened this issue Sep 5, 2013 · 7 comments

Comments

@ilanschnell
Copy link
Contributor

The server should fall back to something in the Python standard library, when redis is not available, e.g. in memory, shelve module, or sqlite3. Getting redis to work in not trival for most users, and it seems in particular difficult on Windows.

@bryevdv
Copy link
Member

bryevdv commented Sep 5, 2013

Redis is already an optional dependency, in the sense that Bokeh can be used to generate plots in static HTML output, or in inline IPython Notebook output, both without redis. I don't think the current server functionality can be reproduced with any of the tools you mention since the server requires two-way communication/notifications. Also the browser JS application is not going to have access to arbitrary local filesystem resources.

I am interested in exploring other communications/persistence options in the future (other databases, web sockets), but that is an entirely separate matter, so I am going to close this issue.

@bryevdv bryevdv closed this as completed Sep 5, 2013
@ilanschnell
Copy link
Contributor Author

But currently, when you run the bokeh-server, but do not have redis installed, you get:

$ ./bokeh-server -h
Traceback (most recent call last):
  File "./bokeh-server", line 4, in <module>
    from bokeh.server import start
  File "/Users/ilan/src/Bokeh/bokeh/server/start.py", line 9, in <module>
    import redis
ImportError: No module named redis

If redis is truly an optional dependency, it should either:

  • print a message: "Redis needs to be installed to sun the bokeh-server"
  • not include the bokeh-server script in setup.py when redis is not installed

@ilanschnell ilanschnell reopened this Sep 5, 2013
@bryevdv
Copy link
Member

bryevdv commented Sep 5, 2013

After talking with Hugo, I have realized I have misunderstood the manner in which redis is used, so perhaps it can be made a truly optional dependency even for the server after all. But I don't know the time frame for adding this change, so in the mean time I will make it print a better message.

@pzwang
Copy link

pzwang commented Sep 5, 2013

Actually, it should be quite trivial to make the change so that on windows, the non-redis version just keeps all the objects around in a big global dict in the process, and it disappears when the process dies.

@filmor
Copy link
Contributor

filmor commented Mar 5, 2014

@pzwang That would be actually fine by me. Is this implemented?

@bryevdv
Copy link
Member

bryevdv commented Mar 5, 2014

@filmor here is a PR for this #388 It needs a little more cleanup and work (I'd like to add a shelve backend as well) but I should be able to merge it later today.

@bryevdv
Copy link
Member

bryevdv commented Mar 5, 2014

@filmor this PR has been merged. It currently supports an in-memory bokeh-server, which is used by default on windows. Will add a simple "shelve" based on later. It should work on Chrome and FF, there appears to be html/css problems on IE, the plot divs fail to expand. I am going to make a separate ticket for that. Please re-open this issue if you have any problems!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants