Erro estranho do Django / Apache 500 ao carregar imagens geradas dinamicamente (às vezes)

1

Eu tenho um erro Http500 muito estranho ao carregar imagens geradas dinamicamente. E por alguma razão, isso só acontece às vezes. O log de erros do apache não mostra nenhum erro. O servidor de desenvolvimento do django usado para atendê-los bem no desenvolvimento.

Exemplo dos registros:

174.255.117.79 - - [04/Feb/2013:12:00:46 -0600] "GET /images/gender/ HTTP/1.1" 500 531 "http://okstereotype.me/results/" "Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; XT862 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"
174.255.117.79 - - [04/Feb/2013:12:00:46 -0600] "GET /images/bodytype/ HTTP/1.1" 500 531 "http://okstereotype.me/results/" "Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; XT862 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"
174.255.117.79 - - [04/Feb/2013:12:00:46 -0600] "GET /images/religion/ HTTP/1.1" 200 30722 "http://okstereotype.me/results/" "Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; XT862 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"
174.255.117.79 - - [04/Feb/2013:12:00:46 -0600] "GET /images/smoking/ HTTP/1.1" 200 58577 "http://okstereotype.me/results/" "Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; XT862 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"
174.255.117.79 - - [04/Feb/2013:12:00:47 -0600] "GET /images/ethnicities/ HTTP/1.1" 500 531 "http://okstereotype.me/results/" "Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; XT862 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"
~

E às vezes eles carregam:

192.168.1.4 - - [04/Feb/2013:12:11:20 -0600] "GET /images/gender/ HTTP/1.1" 500 531 "http://okstereotype.me/results/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0"
192.168.1.4 - - [04/Feb/2013:12:11:20 -0600] "GET /images/religion/ HTTP/1.1" 200 41967 "http://okstereotype.me/results/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0"
192.168.1.4 - - [04/Feb/2013:12:11:20 -0600] "GET /images/ethnicities/ HTTP/1.1" 200 44148 "http://okstereotype.me/results/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0"
192.168.1.4 - - [04/Feb/2013:12:11:20 -0600] "GET /images/bodytype/ HTTP/1.1" 200 44471 "http://okstereotype.me/results/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0"
192.168.1.4 - - [04/Feb/2013:12:11:20 -0600] "GET /images/smoking/ HTTP/1.1" 200 59910 "http://okstereotype.me/results/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0"

As imagens são geradas com uma visão:

(r'^images/(\w+)/$', mysite.views.show_pic)

E a visualização usa a biblioteca PIL para desenhar e salvar a imagem da seguinte forma:

response = HttpResponse(mimetype="image/png")
img.save(response, "PNG")

Todo o meu CSS estático é servido corretamente. Alguma idéia?

    
por lqdc 04.02.2013 / 19:21

1 resposta

1

Uma boa maneira de analisar o erro seria fazer uma cópia de settings.py chamando-o de "settings_test.py" por exemplo. Em seguida, defina essa cópia para DEBUG = True e, a partir de uma execução de shell - , é possível usar outra porta diferente de 80 ou 443 :

python manage.py runserver 0.0.0.0:5678 --settings relative.path.to.settings_test

ou:

python django-admin.py runserver 0.0.0.0:5678 --settings relative.path.to.settings_test

Em seguida, teste-o através desta porta (por exemplo: www.mydomain.com:5678/) e você verá um rastreamento se algo acontecer. Mesmo que seja um método GET / POST secundário que não interfira com o carregamento da página principal, você deverá ver um traceback no Shell assim.

Use Ctrl + C para interromper a execução do runserver quando terminar.

    
por 24.03.2015 / 11:05