Re: How to call a function when a project starts.

2014-08-01 Thread Russell Keith-Magee
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  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
> 
> .
> 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.


Re: How to call a function when a project starts.

2014-07-31 Thread cmawebsite
I think if you put it in urls.py it should run (once) just before the first 
request.

On Thursday, July 31, 2014 10:30:08 AM UTC-4, ke1g wrote:
>
> It runs twice because runserver uses two processes: the real server, and; 
> the monitoring process that restarts the other when you change a source 
> file. You could fool around with undocumented internals to figure out which 
> a given import is running in.  Or you could use a modifies runserver 
> command. Or you could modify manage.py. Or you could, if your O/S supports 
> it, open a file for exclusive use and the one that can't knows that it is 
> the server process.
>

-- 
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/f4f7f03b-cbc0-46eb-a472-f75a0717d4cf%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: How to call a function when a project starts.

2014-07-31 Thread Bill Freeman
It runs twice because runserver uses two processes: the real server, and;
the monitoring process that restarts the other when you change a source
file. You could fool around with undocumented internals to figure out which
a given import is running in.  Or you could use a modifies runserver
command. Or you could modify manage.py. Or you could, if your O/S supports
it, open a file for exclusive use and the one that can't knows that it is
the server process.
On Jul 30, 2014 7:30 PM, "Mike Dewhirst"  wrote:

> On 31/07/2014 5:57 AM, Chen Xu 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.
>>
>
> Maybe you could turn do_something() a singleton so it only executes once?
>
> http://stackoverflow.com/questions/6760685/creating-a-singleton-in-python
>
>
>
>
>
>> 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
>> > qbTXbMGmYU%3D5R618rbt7pT%3DgTL%3DWAxhCR-prmuLbz-VKw%
>> 40mail.gmail.com?utm_medium=email_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/53D97FE6.3000301%40dewhirst.com.au.
> 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/CAB%2BAj0v1qGWYCXtJxBGqCRwSmYGfF%3DM54JXomAp-k-Hdd4OZAg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Re: How to call a function when a project starts.

2014-07-30 Thread Mike Dewhirst

On 31/07/2014 5:57 AM, Chen Xu 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.


Maybe you could turn do_something() a singleton so it only executes once?

http://stackoverflow.com/questions/6760685/creating-a-singleton-in-python






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
.
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/53D97FE6.3000301%40dewhirst.com.au.
For more options, visit https://groups.google.com/d/optout.


Re: How to call a function when a project starts.

2014-07-30 Thread Chen Xu
I am running 1.6.2


On Wed, Jul 30, 2014 at 4:02 PM, aRkadeFR  wrote:

> Which version of Django are you running?
>
> On 30/07/14 15:46, Chen Xu 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
> .
> > 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/20140730200231.GD2235%40rkade-thinkpad
> .
> For more options, visit https://groups.google.com/d/optout.
>



-- 
⚡ 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-qaxCtB-5R67fJpoo0xjhGzHw91PrS4qGb_aiUxiOmQF%2BQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Re: How to call a function when a project starts.

2014-07-30 Thread aRkadeFR
Which version of Django are you running?

On 30/07/14 15:46, Chen Xu 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.
> 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/20140730200231.GD2235%40rkade-thinkpad.
For more options, visit https://groups.google.com/d/optout.


How to call a function when a project starts.

2014-07-30 Thread Chen Xu
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.
For more options, visit https://groups.google.com/d/optout.