Django-compressor: Erro de compactação off-line

Criado em 25 set. 2013  ·  6Comentários  ·  Fonte: django-compressor/django-compressor

Passei uma semana depurando isso (duas semanas diferentes) e estou bastante frustrado. Acho que li quase todos os artigos/posts/questões de blog que existem e não sei o que fazer. Eu tenho um servidor de teste e um servidor de produção (cada um com buckets s3 separados) e isso funciona na preparação, mas não na produção, mesmo que os servidores (no Heroku) e os buckets sejam idênticos.

Eu fiz isso para que as tags de compactação apareçam apenas no modelo filho. Eu removi todas as tags de modelo de dentro das tags de compactação (por exemplo, if/else), o que significa que tenho mais tags de compactação para que as instruções if/else possam estar fora das tags de compactação.

Alguém tem uma compactação offline funcional configurada em produção em qualquer lugar para olhar? Com compress offline=False--há uma carga extra significativa no servidor, frequentemente um atraso extra de 300-500 ms, o que obviamente não vale a pena e anula todo o propósito deste pacote.

Eu realmente poderia usar alguma ajuda, mas basicamente não tenho ideia do que fazer neste momento, porque é o mesmo problema que você pode ler com centenas de pessoas na lista de problemas aqui, em postagens de blog em outros lugares, e nenhuma solução repetível parece ser sendo sugerido - o que é um grande problema para algo tão crucial para o desempenho e que provavelmente qualquer implantação do Django requer.

deployment

Comentários muito úteis

Nos últimos dias eu estava ocupado resolvendo o mesmo problema, e aqui está a correção, caso ajude alguém.

Em um dos modelos, onde o problema era reproduzível, eu estava usando context. Durante a compactação offline não há acesso ao contexto, por isso a chave gerada durante a compactação offline e a do ciclo de resposta obviamente serão diferentes.

Tente isolar as partes do JavaScript em que você está confiando no contexto para outro bloco, que está fora da tag compactar.

Espero que esta informação ajude alguém.

Todos 6 comentários

O mesmo aqui. Parece que o COMPRESS_OFFLINE do django_compressor causa mais problemas do que soluções. Não consigo fazer funcionar porque recebo essas mensagens:

OfflineGenerationError: You have offline compression enabled but key "%s" 
is missing from offline manifest. You may need to run "python manage.py compress".

Mesmo aqui :/

Não é possível fazer a compactação offline funcionar. Continue recebendo OfflineGenerationError.

Então, certifiquei-me de executar o seguinte durante cada implantação em todos os servidores da web

python manage.py compress --force
python manage.py collectstatic

Isso deve atualizar o arquivo manifest.json. Também me certifico de que o nome do arquivo de manifesto seja diferente a cada push. Como adicionar um número de versão. manifest_%s.json
Eu uso o último id de hash do git commit para o plugin %s. Então, durante o deploy, ele faz um git pull, compact, collectstatic, criando um novo css/js minificado/agregado com um novo arquivo manifest.json.
E então eu reinicio o apache. Portanto, tudo deve ser suave.

Também me certifiquei de que o collectstatic não chamasse --clear, para excluir a mídia estática/* antiga.

Faz sentido?

ok estou exatamente com o mesmo problema.
Alguém está executando isso offline do S3 de maneira confiável?

Nos últimos dias eu estava ocupado resolvendo o mesmo problema, e aqui está a correção, caso ajude alguém.

Em um dos modelos, onde o problema era reproduzível, eu estava usando context. Durante a compactação offline não há acesso ao contexto, por isso a chave gerada durante a compactação offline e a do ciclo de resposta obviamente serão diferentes.

Tente isolar as partes do JavaScript em que você está confiando no contexto para outro bloco, que está fora da tag compactar.

Espero que esta informação ajude alguém.

Esta página foi útil?
0 / 5 - 0 avaliações