2015-10-31 16 views
11

Obecnie próbuję tworzyć samouczki Pythona i hostować je przy użyciu notatnika na stronie Heroku. Problem polega na tym, że notesy ipython są statyczne po załadowaniu. Staram się, aby użytkownik mógł interaktywnie korzystać z notebooka (na przykład wydruków). Nie chcę również, aby dane z ich notebooków były zapisywane na stałe na stronie Heroku.Interaktywne notebooki Ipython na Heroku

Odpowiedz

1

Z tego co rozumiem, masz 2 problemy do czynienia z:

  • interaktywnych notebooków
  • "tylko do odczytu" notebooki (nie zapisać zmiany)

Dla numer 1, musisz użyć serwera jupyter (nowy serwer IPython dla notebooków). Tylko pokazanie notatnika nie wystarczy, ponieważ potrzebujesz serwera, aby "zrozumieć" i wykonać modyfikacje. Zobacz: http://jupyter-notebook.readthedocs.io/en/latest/public_server.html

Nie jestem zaznajomiony z Heroku, po przeszukaniu 2s znalazłem to: https://github.com/pl31/heroku-jupyter, który był w stanie wdrożyć działający serwer Jupyter na maszynie heroku demo.


Według mnie, problem 2 jest trudniejszy do rozwiązania.

Gdy "uczniowie" zmienią komputer, modyfikacje zostaną zastosowane do pliku notatnika (.ipnb), więc modyfikacje będą trwałe ... Nie jest to pożądane.

Można wypróbować kilka sztuczek przy użyciu uprawnień do plików, aby zapobiec jądro, aby zapisać plik, ale myślę, że to tylko awaria jądro ...

Ponadto prosi kilka problemów interakcji użytkownika, na przykład co zrobić, jeśli Tracę połączenie z Internetem? Czy stracę pracę? Czemu ? Czy tego właśnie chcę jako uczeń?

W tym celu najlepszym rozwiązaniem jest zapewnienie użytkownikowi dostępu do notebooka/pracowni, w którym można zapisać jej postęp, ale jest to więcej pracy niż tylko wdrożenie serwera jupyter. Jako przykład, zobacz databricks.com (pierwszy (jedyny), który przychodzi ci na myśl, niekoniecznie najlepszy).

(Nawiasem mówiąc, wydaje się, że tryb wielu użytkowników jest już wdrażane: https://jupyterhub.readthedocs.io/en/latest/)


chciałbym dodać jeszcze jedno spostrzeżenie o bezpieczeństwo serwera. Umożliwienie obcemu dostępu do serwera z osadzoną powłoką brzmi jak zły pomysł, jeśli nie jesteś przygotowany na konsekwencje. Proponuję, abyś zobaczył, jak możesz ustawić sesję jupytera każdego użytkownika w "więzieniu"/kontenerze, wszystko, co działa w Heroku.