Domanda

Sto sviluppando un'app Django che visualizza i dati in varie forme, comprese tabelle e grafici a barre.Usa MATPLOTLIB per creare il grafico a barre come PNG.Quindi restituisce utilizzando questo codice:

.
.
.
canvas=FigureCanvas(fig)
response=HttpResponse(mimetype='image/png')
canvas.print_png(response)
return response
.

Tutto funziona bene quando utilizzo il server di sviluppo Django integrato.Tuttavia, quando uso:

python manage.py run_gunicorn 
.

Tutto funziona tranne i grafici a barre.Invece di un grafico a barre, vedo l'URL.Devo eseguire Nginx per ottenere Gunicorn per visualizzare immagini PNG o c'è qualcos'altro che mi manca?

Modifica

Uscita da Curl:

 About to connect() to 127.0.0.1 port 8000 (#0)
*   Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 8000 (#0)
> GET /myapps/bar_chart1 HTTP/1.1
> User-Agent: curl/7.21.0 (x86_64-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.18
> Host: 127.0.0.1:8000
> Accept: */*
> 
< HTTP/1.1 200 OK
< Server: gunicorn/0.12.1
< Date: Mon, 16 May 2011 14:05:00 GMT
< Connection: close
< Transfer-Encoding: chunked
< Content-Type: image/png
< 
* Leftovers after chunking.  Rewinding 16379 bytes
* Closing connection #0
.

È stato utile?

Soluzione

Ah!Questo è legato a un bug che abbiamo fissato a Gunicorn di recente [1].Apparentemente Django non imposterà una lunghezza del contenuto quando si utilizza httpresponse.write ().È possibile impostare questo a mano o apparentemente aggiungendo Django.middleware.http.ConditionalGardMiddleware alla tua lista del middleware causerà Django aggiungere la lunghezza del contenuto.

Rilasseremo una nuova versione di Gunicorn nei prossimi passi i giorni in modo che il bug originale sia risolto a breve.

[1] https://github.com/benoitc/gunicorn/commit/d83c63429Eba755f5971217917E57Feeee85034E57Feeee85034SeA>

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top