My apologies for the ambiguity of the question. At least you got my drift.
Thanks for the advice. It gave me a better understanding of how to go about the problem. On Jan 16, 4:02 am, Malcolm Tredinnick <[email protected]> wrote: > On Thu, 2009-01-15 at 01:12 -0800, Jurie-Jan Botha wrote: > > I would like to run a thread for an entire Django project. I would > > like to house the code that starts this thread up inside an > > application. > > Your terminology choices here are going to lead to confusion. Django has > "applications" (the things you list in the INSTALLED_APPS setting) and > "projects" (optional; one or more settings files, a root url conf file > and some applications). > > Saying something runs "inside an application" is not really accurate, > or, at a minimum, is confusing (if you mean some other definition of > "application"). > > So let's rephrase this as you would like a thread to run continuously. > > The problem is that Django code (and any code that uses the Django > library) doesn't really have a concept of running continuously. It is > fed a request, executes some code, generates a response and then might > stop running. The lifetime of the code is dependent upon the webserver, > which will never stop and start a new process for every request, but > will often stop processes now and again for a variety of good reasons. > Also, multiple processes or threads of execution will be running at once > (so that the server can handle multiple requests). > > > > > Currently I placed the code in the '__init__.py' in the root of my > > Django application, but when I start the server using 'runserver' is > > seems to run this code twice. So it creates two threads. Any idea how > > I can prevent this from happening? > > Don't do that (see below). There's no guarantee that things are only > imported once. > > > When I start the project as a daemon it seems the thread doesn't run > > at all!? > > > Also, any tips on doing this kind of thing? > > Yes. Don't do that. > > > I'm a little worried that > > I might run into some crazy issues when I place this into production. > > You're already hitting crazy issues. Any reason to expect they'll > disappear when you move into production? :-) > > If you want something long running, don't have anything Django related > attempting to manage the lifecycle. You need a long-running daemon > process. Possibly you might interact with it in a way such that if it's > not running already, the first request will start it up. You could do > this by writing some code that knows how to spawn the daemon process and > also how to check if it's already running. You always use that code to > contact the daemon and, before anything is sent to the daemon, it checks > if it's running and, if not, starts it up. > > I would probably use a network socket (or a Unix socket) to communicate > with the daemon in this case, since the socket will be closed if the > daemon process terminates, giving you a reasonable way to check if it's > up and running (if you can't connect to the socket, it's probably not > running). > > Regards, > Malcolm --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---

