Hi All,

Need small help to get output on the below code

for char in 'Python is easy':
        if char !='':
                print(char, end='')
                continue
        else:
                break

I want print only ==> easy

On Mon, Dec 14, 2020 at 5:11 AM 'Robert Schroll' via Project Jupyter <
[email protected]> wrote:

> Hi all,
>
> We've managed to find something of a work-around to this problem.  By
> having only a single hub provide placeholders, and telling all hubs to use
> the userScheduler from that special hub, we've managed to avoid the
> OutOfmemory pods for the last few days.  (For those of you playing along at
> home, set c.KubeSpawner.scheduler_name = '<special hub
> namespace>-user-scheduler'  in the JupyterHub config file for all hubs
> other than the special one.  Or all of them; it already defaults to that in
> the special hub.)
>
> I don't particularly like having one hub that's special in some way, so
> I'm still open for other ideas on how to fix this.  Perhaps it's possible
> to deploy a the userScheduler as part of its own namespace, independent of
> any hub?
>
> I appreciate all hints and guesses you have to offer,
> Robert
>
> On Dec 3 2020, at 10:41 am, Robert Schroll <[email protected]>
> wrote:
>
> Hi all,
>
> We've run into a problem with a JupyterHub on Kubernetes set up (based on
> Z2JH), where user pods sometimes end up in an OutOfmemory state on
> startup.  This seems to happen only with multiple hubs and user
> placeholders.  Has anyone else run into this issue?
>
> Our set up is a single Kuberenetes cluster.  Nodes are sized to support a
> single user pod at a time, and we're relying on autoscaling to set the
> cluster size appropriately.  We typically run several hubs on this cluster,
> and we've recently be experimenting with the user placeholders to speed
> start up time.
>
> As best I can tell, the issue occurs as follows:  Let's suppose we're
> running two hubs, alpha and beta.  Alpha has two placeholders running, ph-1
> and ph-2.  Since each takes up a full node, they are running on node-a and
> node-b.  Now, on the beta hub, user-beta-1 starts their server.  There is
> no extra space, so ph-1 gets evicted, and user-beta-1 is assigned to
> node-a.  This all works fine, even with the ph-1 and user-beta-1 being from
> different namespaces.  The cluster notices the unschedulable pod (ph-1) and
> starts scaling up.  Before the new node is ready, another user from the
> beta hub, user-beta-2, starts their server.  Again, there is no extra
> space, so ph-2 is evicted.  Now, however, both user-beta-2 and ph-1 (which
> was waiting for space to open up) get assigned to node-b (where ph-2 just
> left).  ph-1 starts up more quickly and reserves the node's resources, so
> when user-beta-2 starts, it finds insufficient resources.  (In our setup,
> memory is the critical limit.)  user-beta-2 enters an OutOfmemory state,
> where it sulks until I come around and delete the pod.  (Even if we remove
> other pods from the node, it never recovers.)
>
> One worry is that there is some mismatch in priorities between the
> different namespaces.  But I don't think that is the (entire) issue --
> placeholders from one namespace are evicted to make room for pods from
> another.  I think it has more to do with assignment of waiting pods to
> (newly empty) nodes.  As I understand it, this is done by the
> userScheduler, and there's one per hub namespace.  Perhaps the two
> schedulers are making inconsistent decisions?
>
> One solution would be to give each hub its own node pool, so that pods
> could only evict placeholders from the same hub.  I'd like to avoid that if
> possible.  Our hubs have different usage patterns, so it's nice to have one
> large pool of placeholders that can server whichever hub is seeing the most
> use at any given time.
>
> I wonder if it's possible to run a single userScheduler for all the hubs.
> Perhaps this would force it to consider user pods from all namespaces when
> making decisions.  But I don't know how to go about doing this offhand.
>
> Another solution would be to find a way to restart user pods that get into
> the OutOfmemory state.  If I delete the pod by hand and then restart it
> from the web interface (which itself requires a restart to notice that the
> user pod has gone away), it will come up just fine, even kicking out the
> placeholder that beat it before. Running a cron job that could do this
> every minute would be a fine stop-gap solution.  But again, I'm a bit out
> of my depth here.
>
> Any ideas or suggestions?  I'll readily admit that there's a 50/50 chance
> I've misdiagnosed at least a part of the problem, so I'm happy to run any
> additional diagnostics that might clear things up.
>
> Thanks,
> Robert
>
> --
> You received this message because you are subscribed to the Google Groups
> "Project Jupyter" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/jupyter/5EB2885C-CE02-42EE-95E8-54DF68B2EF1D%40getmailspring.com
> <https://groups.google.com/d/msgid/jupyter/5EB2885C-CE02-42EE-95E8-54DF68B2EF1D%40getmailspring.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Project Jupyter" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jupyter/CAM29nMeiQ63TZs1_qJv7CYnVZho_5VxnZ5iaaYCoM%3DhGDf25uA%40mail.gmail.com.

Reply via email to