2011-10-10 13 views
14

Nel mio ambiente di sviluppo ricevo errori intermittenti per il servizio di file statici (js scripts e css). Nella console degli errori in Chrome ottengo 404s. Ma se aggiorno su quegli articoli, o visito direttamente gli URL, vengono pubblicati bene.Il server dev di Django non riesce a servire in modo intermittente file statici

Questo è fastidioso.

Esempio:

GET http://127.0.0.1:8000/static/js/editor/xyz.js?v=1 404 (NOT FOUND) 

ma se mi visita l'URL direttamente benissimo. E se aggiorno la pagina un paio di volte, funzionerà di nuovo.

Qualche idea?

Chrome 14.0.835.202

Django==1.3 
Fabric==1.0.1 
Jinja2==2.5.5 
PIL==1.1.7 
Pygments==1.3.1 
South==0.7.3 
Sphinx==1.0.5 
boto==2.0 
chunks==0.1 
django-devserver==0.2.1 
django-pagination==1.0.7 
django-sorting==0.1 
django-storages==1.1.3 
docutils==0.8 
gunicorn==0.12.1 
ipython==0.10.1 
paramiko==1.7.6 
pep8==0.6.1 
psycopg2==2.2.2 
pycrypto==2.0.1 
python-dateutil==1.5 
python-memcached==1.45 
wsgiref==0.1.2 
+0

Io ho lo stesso problema. Hai risolto il motivo? –

+0

Non ancora! L'esecuzione con --fappe sembra funzionare ma rende impossibile l'uso di pdb – Joe

+0

perché il tuo URL ha "? V = 1"? – n3storm

risposta

2

Il server dev è single-threaded, quindi se qualcosa rimane in attesa, blocca ogni richiesta.

Solitamente lavoro con lo django concurent dev server che è multi-thread e funziona molto meglio. Inoltre è molto veloce e facile da configurare;)

+4

Un server che non è bloccato non può servire 404s ... – Thomas

+0

assolutamente true:/ – jujule

+0

Questo ha smesso di accadere per me è frustrante Non ho aggiornato Django sul progetto ... strano. – Joe

-1

potrebbe dipendere dalla configurazione. cosa hai fatto per la statica? quali sono le impostazioni? hai fatto la raccolta statica? provare this in caso

tuttavia, di servire i file statici in fase di sviluppo:

Attenzione Questo funziona solo se DEBUG è True.

Ecco perché questa vista è gravemente inefficiente e probabilmente insicura. Questo è destinato esclusivamente allo sviluppo locale e non dovrebbe mai essere utilizzato in produzione.

da here

non puoi semplicemente fornire i file statici in un altro server?

+0

Mi dispiace, è stato tanto tempo fa che non ricordo. Penso che abbia smesso di funzionare, quindi ho smesso di preoccuparmene. – Joe

+0

È normale servire file statici dal server di sviluppo. È tipico per lo sviluppo. Non ho detto che questo succede in produzione. – Joe

-1

Dopo aver letto tutte le risposte, se ancora qualcuno che ha questo problema, allora ... Come da Django natura non c'è bisogno di fare nulla per servire i file statici appena il file delle impostazioni deve avere una corretta configurazione come segue:

STATIC_URL = '/static/' 

STATICFILES_DIRS = (
    # **THIS IS USED WHEN YOUR STATIC FILES ARE IN SOME OTHER FOLDER ALSO** 

    # Put strings here, like "/home/html/static" or "C:/www/django/static". 
    # Always use forward slashes, even on Windows. 

    # Don't forget to use absolute paths, not relative paths. 

    FOLDER_NAME, 
) 

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
    'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

INSTALLED_APPS = (
    # other apps 
    'django.contrib.staticfiles', 
) 

Ma se ancora dovete affrontare problema mettere questo nel vostro urls.py:

(r '^ (percorso del file) $', 'django.views.static.serve', { 'document_root': ' PROJECT_ROOT_DIR "+" percorso alla cartella statica "}),

Sopra l'URL servirà per i file statici sia che si tratti di file JS o CSS o immagini.

In caso di server di produzione non è necessario.

Quindi eseguire: python manage.py collecstatic.

Spero che questo aiuti.

+0

Spiacente, questo non aiuta. Secondo la mia domanda, questo è un problema intermittente. Significato: funziona la maggior parte del tempo. – Joe

+0

Questo è quello che ho scritto che per impostazione predefinita non è necessario fare nulla per servire file statici nel proprio ambiente di sviluppo. Ma se lo affronti ad intervalli irregolari, puoi modificarlo con questo. spero che questo aiuti .. –

+0

Grazie, ma non penso che questo sia il problema. Probabilmente è intorno alla gestione del socket un po 'più in basso (vale a dire con il codice Django piuttosto che con la configurazione del file serving). – Joe

Problemi correlati