As others have pointed out, the reason putting it in settings.py causes it
to be run twice is because settings is loaded twice when you use runserver.
That won't happen in production, however, as the mod_wsgi binding doesn't
require the "other" process when it's deployed through the wsgi interface.

I would **STRONGLY** recommend against the hacks suggested in this thread
that involve building singleton objects, file-based locks, or other
mechanisms that work around the fact that settings.py is invoked twice.

If you're using Django 1.6, the best option is to put the code in your top
level urls.py. This is what admin does to discover all the apps in a Django
system. It's not an ideal solution, but it works, and will only be executed
once, and as close to "startup" as is practical.

If you're using a pre-release of Django 1.7, the new AppConfig class
definitions are designed to provide the exact sort of 'startup
configuration' you've asked about.

https://docs.djangoproject.com/en/1.7/ref/applications/

Yours,
Russ Magee %-)



On Thu, Jul 31, 2014 at 3:57 AM, Chen Xu <xuche...@gmail.com> wrote:

> Hi Everyone:
> I would like to call a function when my project starts, basically I want
> to call a do_something() when I run python manage.py runserver. However,
> when I put it into settings.py, it gets called twice, but I only want it to
> execute once.
>
> Is there a good way to do it.
>
> Thanks
>
>
> --
> ⚡ Chen Xu ⚡
>
> --
> 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 django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> 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/CACac-qbTXbMGmYU%3D5R618rbt7pT%3DgTL%3DWAxhCR-prmuLbz-VKw%40mail.gmail.com
> <https://groups.google.com/d/msgid/django-users/CACac-qbTXbMGmYU%3D5R618rbt7pT%3DgTL%3DWAxhCR-prmuLbz-VKw%40mail.gmail.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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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/CAJxq84-bu-OPNtsfF_En-RxHc-5-opzNH9YUe-DMuTfMykJR9w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to