Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Chico Venancio
    @chicocvenancio
    on the user browser
    Jan Nylund
    @jannylund
    sorry, I'm not familiar with Jupyter terminology. Do you mean the python console started from jupyterlab?
    Moritz E. Beber
    @Midnighter
    In the browser (typically opened by pressing F12).
    Jan Nylund
    @jannylund
    ah. of course. I'll open that for next time. I've refreshed afterwards so now it will not say anything of value.
    indeed. that should show me if websocket disconnects.
    Chico Venancio
    @chicocvenancio
    Yeah, websockets are my suspicion
    Jan Nylund
    @jannylund
    thanks for the idea. I opened it up, let's see if this reproduces.
    So far I've: 1. Enabled stickiness on target groups in AWS (this is behind an ALB) and 2. Extended the proxy times for nginx-ingress.
    1 Alone did not have any effect. If 2 does, then this might be stable now.
    This is deployed from the zero-to-jupyterhub helm chart, which doesn't set any nginx annotations by default. So I'm not sure if this should be needed.
    Chico Venancio
    @chicocvenancio
    We're using the classic Load Balancers in AWS, haven't had any issues
    Jan Nylund
    @jannylund
    I'm just starting to realize another thing.
    I use the Application Load Balancer which does OpenID Auth to Azure AD.
    Chico Venancio
    @chicocvenancio
    when you say an ALB, is it a manually defined one, or did you annotate the services to use ALBs
    ?
    Jan Nylund
    @jannylund
    I manually have created an ALB in AWS, then my services are using nginx-ingress. All my workers are autoadded to a target group which get all traffic from the ALB.
    But the OpenID thing may cause issues with long running websockets.
    Chico Venancio
    @chicocvenancio
    then the services are not type: LoadBalancer
    Jan Nylund
    @jannylund
    No, they are not.
    From my helm config:
      secretToken: "{{ jupyter_proxy_secret }}"
      service:
        type: NodePort
    ingress:
      enabled: true
      annotations:
        nginx.ingress.kubernetes.io/proxy-body-size: 200m
        nginx.ingress.kubernetes.io/client-body-buffer-size: 200m
        nginx.ingress.kubernetes.io/proxy-read-timeout: 3600
        nginx.ingress.kubernetes.io/proxy-send-timeout: 3600
    Chico Venancio
    @chicocvenancio
    Seems sensible
    Jan Nylund
    @jannylund
    It looks good in kubernetes as well. And has worked will with everything else.
    Thanks for the ideas. I'll ask some users to keep the developer inspector open tomorrow during office hours to see if that is related.
    Chico Venancio
    @chicocvenancio
    Yeah, we have a backlog task to look into network and application loadbalancers, I'm sure they have their peculiarities to deal with. BTW, this might get more traction in the jupyterhub/jupyterhub channel
    Jan Nylund
    @jannylund
    But I wonder why it need to restart kernel if websocket is reconnected... that doesn't make any sense to me. (but maybe I just don't know the internals)
    Chico Venancio
    @chicocvenancio
    it probably doesn't need to restart
    but it might think it does...
    Jan Nylund
    @jannylund
    Yes exactly.
    So it might be that the client think the server died when it should just need to reconnect websocket.
    Chico Venancio
    @chicocvenancio
    when we had trouble connecting to the websockets there was simply no error message whatsoever (it never started the connecetion)
    Jan Nylund
    @jannylund
    Thanks, I wasn't aware of jupyterhub/jupyterhub. I'll find that. :)
    Jan Nylund
    @jannylund
    @chicocvenancio just saw another failure and it was indeed websocket being killed by openid session timeout. I extended that now so maybe that solves my problem. But would indeed be nice if the client could reconnect.
    Chico Venancio
    @chicocvenancio
    Dismissing should trigger a reconnect
    @jannylund ^
    Jan Nylund
    @jannylund
    it does, but the python kernel dies (or at least the frontend belives it does).
    Jan Dalheimer
    @02JanDal
    Hi there, is there some way to start multiple servers for the same user and image?
    I use a ProfilesSpawner with a DockerSpawner-profile per host and need users to be able to run multiple lab-instances, but it seems like JupyterHub needs container names to be unique (or it won't start a new container despite the differing host) and the only variables available to name containers are user and image
    Carol Willing
    @willingc
    Jan Dalheimer
    @02JanDal
    (also it seems to not even be possible to use {imagename} in the name_template using default options, since the default image contains the version tag and thus a : which docker doesn't like)
    Steven Silvester
    @blink1073
    Thanks @willingc, I engaged
    Jan Nylund
    @jannylund
    @chicocvenancio I'm happy to say that things are smooth after extending the openid session time. thanks for pointing me to the obvious "check the ws connection". I needed that to find it :)
    (at least I couldn't reproduce error today and I got no complaints. Time will tell if it's true or not)
    Chico Venancio
    @chicocvenancio
    @jannylund Great! Nice to hear
    Jason Grout
    @jasongrout
    Thanks @willingc!
    Ismael Venegas Castelló
    @SalchiPapa
    Hello everyone!
    Does anyone know of other Books in Jupyter notebook format? like:
    :)
    Dave Hirschfeld
    @dhirschfeld
    FYI: There is a project which aims to help with doing just that:
    https://jupyter.org/jupyter-book/intro.html
    kunhui123
    @kunhui123
    Hi All, If my current web app is code using "Scala.js" , will it possible for me to integrate the "Jupyter" into it?
    Jason Grout
    @jasongrout
    I suppose anything is possible, but we'd need much more information, both about exactly what you are trying to accomplish and about the specific exact technical things you want to achieve, to give you a better answer. For example, one extra detail is exactly what from Jupyter would you want to try to incorporate - there are many many different parts of Jupyter.