Monday, September 25, 2017

Re: best practices for location of start up code

On Sat, Sep 23, 2017 at 6:21 PM, Antonis Christofides
<antonis@djangodeployment.com> wrote:
> Hello Larry,
>
> The Django development server runs in more than one thread, which is probably
> why your initialization code run twice.
>
> OTOH, it run only once on production probably because you have configured uwsgi
> to run only one process (it's possible that this is the default on single-core
> machines). However, we usually want to run at least two processes.

I have 5 uwsgi processes - I was only seeing the init code run once
because I was just sending uwsgi a reload signal. If I killed it and
restarted it I was seeing the init code run 5 times.

> Running initialization code only once per wsgi server (re)start instead of once
> per process start seems a bit strange. Why do you need this?

I had not been given all the requirements. Turns out what we need to
do should not be part of the server init, so we moved it somewhere
else.

> On 2017-09-23 21:50, Larry Martell wrote:
>> On Sat, Sep 23, 2017 at 2:39 PM, Larry Martell <larry.martell@gmail.com> wrote:
>>> On Sat, Sep 23, 2017 at 1:34 PM, James Schneider
>>> <jrschneider83@gmail.com> wrote:
>>>>
>>>> On Sep 22, 2017 2:58 PM, "Larry Martell" <larry.martell@gmail.com> wrote:
>>>>
>>>> We have some code we want to run 1 time when our django app is
>>>> started. What is the best place for this? I tried putting it in my
>>>> app's config function, but from there I get:
>>>>
>>>> *** AppRegistryNotReady: Apps aren't loaded yet.
>>>>
>>>>
>>>> Once as in only when the app is initially deployed, or once every time the
>>>> web server process is started?
>>>>
>>>> Note that if you place code to run every time the web process is started,
>>>> that it will run for every process, and most web servers spawn multiple
>>>> processes.
>>> I'm looking to run it once when the web server is started (not each
>>> time another process of the web server is started)
>> I am using nginx and uwsgi. I tried experimenting with Antonis
>> Christofides suggestion of using AppConfig.ready(). That seems to get
>> called just once when I start (or restart uwsgi). I tried many
>> connections to the server from different browsers and computers, but
>> still that was only called once. Is that something I can count on?
>>
>> Note, when running the devel django server it was called twice at
>> start up, but when the 'real' server it was only called once. Anyone
>> know why I got the 2 calls here?

--
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+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CACwCsY6wx-XwRQLdb_D35E8yL%3DmstpKczchQ4HJpB4WzHXv3nA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment