HI Michael,

There's a problem here - Web apps don't have a lifecycle like this. The
only part of the app lifecycle that can be relied upon is the
request-response cycle - someone makes a response, which will eventually be
returned as a response. Outside of that internal lifecycle, not much can be
guaranteed. A process will have to start in order to service a request (and
there are ways to hook into that), but there are no guarantees that this
process will last for 1 request, 10 or 10000. And there isn't a coordinated
shutdown of the web process - the web server may choose to shut down a web
worker at any time.

If you're using a queue to perform some sort of external processing, then
that queue should be stored *outside* the web app itself. This means using
a message queue (like RabbitMQ), or a service that provides an analogous
interface (like RQ, layered over Redis). That way, a short lived web
request can push something onto the queue, and then exit immediately. The
web request doesn't need to worry about the lifecycle of the queue - it
just uses the queue as a service.

In short - you need to stop thinking of the web server as a "program" with
a startup, shutdown, and predictable lifecycle, and move to thinking about
it as "a function floating in space that can be invoked" - because, in
practice, that's what it is. If you've got anything long lived, it needs to
live outside the web process.

Yours,
Russ Magee %-)

On Fri, Oct 24, 2014 at 5:18 AM, Michael <[email protected]>
wrote:

> Hi,
>
> How to detect that the django app is stopping?
>
> I use some librairies that use a queue (queue.Queue) to store the data
> that will be sent in batch.
> They provide a flush method to flush at the end of the program to make
> sure there’s nothing left in the queue.
>
> But where could I call the flush method in django?
>
> Thanks
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/ddecba43-49b3-493c-ad35-83d02758f95f%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/ddecba43-49b3-493c-ad35-83d02758f95f%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAJxq848W3m_OkRU9v29bN_AfX%3DoE_0qoh79zv_17sjQ2CSyUPg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to