Hi Roberto, Any ideas on where to go from here? I'm really hoping it'll be possible to get this working as it'll be a much simpler configuration to ship for downstream deployers of our application than emperor.
--nate On Fri, Oct 19, 2018 at 11:37 AM Nate Coraor <n...@bx.psu.edu> wrote: > Hi Roberto, > > I tried with processes: 4 and threads: 0 and the outcome is the same. > > I forgot to mention this in the previous message but uWSGI consistently > logs only the first 3 requests to /proxy despite the fact that 22 > (successful) requests are made as a result of the request to > /proxy/jupyter/ipython/tree. No other requests are logged until the > "timeout" period expires. With UWSGI_DEBUG set and times added to the > offload session debug messages you can see a bit more: > > Here's the 3rd request to /proxy, the last one logged: > > [uWSGI DEBUG] called 0x7f268a856b90 0x7f265d916c68 1 > Proxy localhost:8192 to 172.17.0.1:32780 > [offload] created session 0x7ffd81de4ea0 at 1539962620 > [pid: 7942|app: -1|req: -1/20] 127.0.0.1 () {46 vars in 1144 bytes} [Fri > Oct 19 11:23:40 2018] GET > /proxy/jupyter/ipython/api/terminals?_=1539962620828 => generated 0 bytes > in 2 msecs via offload() (HTTP/1.1 202) 0 headers in 0 bytes (0 switches on > core 0) > > 60 seconds later, 3 sessions are destroyed: > > [offload] destroyed session 0x7f2658000bd0 at 1539962680 > [offload] destroyed session 0x7f2658000bd0 at 1539962680 > [offload] destroyed session 0x7f2658000bd0 at 1539962680 > > It's not until all 3 are destroyed that requests to / work properly again. > This is the case regardless of the number of processes, threads, or offload > threads. > > --nate > > On Fri, Oct 19, 2018 at 7:49 AM Roberto De Ioris <robe...@unbit.it> wrote: > >> >> > Hi all, >> > >> > My application has the ability to launch per-client Jupyter Notebooks in >> > Docker containers and maintains a mapping from the client's session >> > (cookie) to their Jupyter container's port. It then starts up a proxy >> > application written in Node.js to allow clients to access their >> > containers. >> > The proxy application listens on its own port, although in production >> > deployments, both uWSGI and the proxy are proxied by nginx, which serves >> > the application at / and the proxy at /proxy on a single port. >> > >> > I am trying to replicate this behavior purely in a single instance of >> > uWSGI >> > (without emperor) and currently everything works, except that when you >> > access Jupyter via /proxy, requests to paths outside of /proxy are also >> > proxied to Jupyter (instead of sent to the application). Only requests >> > with >> > the session cookie that accessed /proxy see this behavior, other clients >> > continue to be able to access the application as usual. After around a >> > minute of not making requests to /proxy, everything returns to normal >> and >> > requests outside /proxy are again delivered to the application. >> > >> > The key seems to be the use of offload-threads: if enabled (any number), >> > this behavior occurs. If not enabled, the proxy works, albeit very >> slowly, >> > and requests to paths outside /proxy continue to be delivered to the >> > application as intended. >> > >> > My configuration is here: >> > https://gist.github.com/natefoo/be55129d68517d80681a5038f048c926 >> > >> > In summary: >> > >> > Application at / >> > Proxy at /proxy >> > >> > 1. Client requests /, request is handled by application >> > 2. Client launches Jupyter Notebook via application and requests >> > /proxy/jupyter/ipython/tree, request is proxied to Jupyter >> > 3. Client requests /, request is proxied to Jupyter >> > 4. Client requests / again after waiting ~1 minute, request is handled >> by >> > application >> > >> > T >> >> Hi, can you try disabling multithreading (threads: 0) and instead using >> multiprocessing ? (processes: 4) >> >> Thanks >> -- >> Roberto De Ioris >> http://unbit.com >> _______________________________________________ >> uWSGI mailing list >> uWSGI@lists.unbit.it >> http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi >> >
_______________________________________________ uWSGI mailing list uWSGI@lists.unbit.it http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi