[error] ... mod_mime_magic: invalid type 0 in mconvert()., referer:
http://www.example.com/get_autores/
(note o "example.com", fake :-) Pesquisando o assunto, isso parece ser
provocado por que o Apache, via configurações encontradas em um
arquivo chamado "mime.magic", está tentando inferir o tipo MIME pelo
conteúdo. Encontrei este link [1] que indica que o problema é que o
arquivo "mime.magic" não aceita expressões regulares e, portanto,
provoca o erro 500. O workaround indicado é comentar a bendita linha::
0 regex BEGIN[[:space:]]*[{] application/x-awk
Isso tudo, pareceu fazer algum sentido pra mim, embora não tenha
certeza de nada, por isso estou pedindo ajuda.
Acho que eu fiz o que pude para tentar resolver o problema. Uma delas,
foi executar o view no shell (via manage.py) para ter certeza de que o
problema não era no meu código. A resposta (HttpResponse) retorna 200
OK e o conteúdo é o conteúdo no formato JSON que eu esperava
encontrar. Eu também abri um chamado na locaweb para tentar resolver o
problema com eles, mas a última resposta me desanimou *muito*,
deixando a impressão de que isso vai demorar, e eu sou perfeccionista
com *prazos*, afinal de contas :-)
Procurei também sobre a possibilidade de eu incluir as configurações
(ou sobrepor) do mime.magic em meu domínio, tal como no ".htaccess" ou
similar.
[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=357373
--
Daniel Gonçalves
Base4 Sistemas Ltda.
[www.base4.com.br]
[twitter.com/spanazzi]
--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>
def meu_view(request):
lista = Modelo.objects.all()
resposta = serializers.serialize('json', lista)
return HttpResponse(resposta, mimetype="application/json")
@Matias: Não tenho nem muitos recursos para argumentar, pois realmente
não entendo o suficiente do funcionamento do Apache. Mas o link que eu
indiquei discorre sobre um problema -- que me pareceu -- muito
semelhante. A discussão no tópico me pareceu fazer algum sentido,
embora possa estar completamente enganado. Parece que a linha que eu
citei, no arquivo mime.magic, está provocando o erro 500, por que ela
tenta parsear o conteúdo e inferir o tipo mime.
Realmente estou sem recursos, não sei mais o que fazer. O site todo
está funcionando (o admin, e as views que não usam AJAX). O código
onde o problema ocorre é simples como o que eu postei acima. Se alguém
tiver alguma idéia, seja para tentar outra abordagem de depuração ou
qualquer outra coisa... :-)
Em 3 de agosto de 2010 11:40, Rodrigo Pinheiro Matias
<rodrigo...@gmail.com> escreveu:
1) Executei o shell (via manage.py) usando o console ssh; então eu
executei as linhas da função uma a uma, incluindo os imports
necessários. O HttpResponse criado resultou 200 e o conteúdo era o
conteúdo correto, contendo os dados do meu modelo, belezinha.
2) Invoquei a função na mão -- também no shell, via manage.py, console
ssh: importei o código do view e executei a função (passando um None
no request, já que a função é muito simples e não utiliza o objeto
request para nada). O resultado foi o HttpResponse resultando 200 e o
conteúdo do meu modelo, belezinha também.
Existe alguma outra coisa que eu possa fazer para verificar se o erro
é mesmo no meu código?
Obrigado, Iuri.
def meu_view(request):
lista = Modelo.objects.all()
resposta = serializers.serialize('json', lista)
return HttpResponse(resposta, mimetype="application/json")
Me ocorreu uma outra coisa. Eu estou usando um componente chamado
DjangoFullSerializers [1] para poder fazer com que a serialização
inclua os atributos das chaves naturais (FK e M2M). Na Locaweb eu
criei um diretório "~/.python-local/lib/" e instalei o componente via
easy_install com a opção "-d" (install dir) para o diretório citado.
Daí, coloquei um export para a variável PYTHONPATH no arquivo
".bashrc" e ativei ele::
source .bashrc
Portando, o componente está disponível para mim quando eu executo o
python via console. O que eu estou imaginando é que, se houver uma
outra instância do python em execução que não esteja olhando para a
"minha" variável PYTHONPATH. Daí então, Iuri, você pode ter razão que
o problema é no meu código. Então, o que eu vou fazer para testar é,
modificar o arquivo "index.wsgi" e adicionar o diretório
"~/.python-local/lib/" em sys.path na unha. Mmmm, pode ser. Posto o
resultado aqui assim que eu testar. Caramba! :-)
[1] http://code.google.com/p/wadofstuff/wiki/DjangoFullSerializers
1) Modifiquei o meu view para http://pastebin.com/Ya5X6CdW
2) No meu arquivo index.wsgi, inseri o caminho para o
"~/.python-local/lib/" na mão e salvei;
3) Invoquei a URL que atinge esse view específico no meu navegador e a
resposta foi:
(<type 'exceptions.ImportError'>, ImportError('No module named
wadofstuff.django.serializers.json',), <traceback object at
0x2ae029d47488>)
~/.python-local/lib
/usr/lib/python26.zip
/usr/lib/python2.6
/usr/lib/python2.6/plat-linux2
/usr/lib/python2.6/lib-tk
/usr/lib/python2.6/lib-old
/usr/lib/python2.6/lib-dynload
/usr/lib/python2.6/site-packages
/usr/lib/python2.6/site-packages/PIL
~/wsgi_apps
Notem que eu substituí o caminho absoluto do diretório home por "~"
apenas para evitar qualquer problema.
Mas o curioso é que (notem a 2a. linha), o meu diretório está no
PYTHONPATH. Ele está enxergando o componente DjangoFullSerializers,
mesmo porque, o settings.py inclui uma referência para ele, através do
dict SERIALIZATION_MODULES. Por que será então, que o componente não
está acessível?
Em 3 de agosto de 2010 17:07, Felipe Prenholato <phili...@gmail.com> escreveu:
1) Eu desinstalei o wadofstuff com "easy_install -m";
2) Instalei de novo com o "easy_install-2.6"
3) Alterei o arquivo "index.wsgi" colocando
"wadofstuff_django_serializers-1.0.0-py2.6.egg" direto no caminho
(caminho completo, claro).
Foi uma sucessão de coisas que me indicaram a direção oposta do erro,
começando com o log do apache. Daí, uma googada me afirmou que o
problema poderia não ser no meu código. Testei com o shell e
funcionou! Pensei, diabos, só pode ser mesmo aquele problema com o
mime. Vejam só. Obrigado a todos, de coração :-)