python - datetime.now () em Django aplicação vai mal - CoreDump.pt
datetime.now () em Django aplicação vai mal
Eu tive alguns problemas com uma aplicação Django depois que eu implantado. Eu uso um mod-wsgi Apache + no servidor ubuntu. Um tempo depois que reiniciar o servidor o tempo passa foobar, é errado por cerca de -10 horas. Fiz uma vista Django que se parece com:
e depois que reiniciar o servidor e verifique a URL que mostra que a visão que primeiro parece bem. Em seguida, em um ponto que às vezes dá a hora correta e às vezes não, e depois ele dá na hora errada sempre. O tempo servidor é corect embora.
Qualquer pistas? Eu pesquisei-lo sem sorte.
pythondjangoapachedatetimemod-wsgi
Publicado 19/05/2009 em 17:34 2009-05-19 17:34
fonte usuário Nixarn
Eu posso ver seu urls.py bem?
comportamentos semelhantes me confundiu uma vez antes ...
O que acabou por ser foi a maneira que meu urls.py chamado a vista. Python corria o datetime.now () uma vez e armazenado que para chamadas futuras, nunca realmente chamá-lo novamente. É por isso que devs django teve de implementar a capacidade de passar de uma função, não uma chamada de função, para o valor padrão de um modelo, porque levaria a primeira chamada da função e usar isso até python é reiniciado.
Seu comportamento parece ser a primeira vez que é correto porque é a primeira vez a visão foi chamado. Ele estava incorreta, por vezes, porque ele tem essa mesma data novamente. Em seguida, ele foi aleatoriamente correta novamente porque o seu apache provavelmente iniciou outro processo de trabalho para ele, e a loucura provavelmente acontece quando você ter saltado entre as quais processo foi lidar com o pedido.
Respondeu 19/05/2009 em 17:48 2009-05-19 17:48 share
fonte usuário phillc
Descobri que colocando wsgi no modo daemon funciona. Não sei por que, mas ele fez. Parece que alguns dos processos recém-criados obtém a hora asneira.
Respondeu 02/07/2009 em 17:32 2009-07-02 17:32 share
datetime.now () provavelmente está sendo avaliada uma vez, quando sua classe é instanciado. Tente remover os parênteses para que a função datetime.now é retornado e então avaliado. Eu tive um problema semelhante com configuração de valores padrão para os meus DateTimeFields e escreveu-se a minha solução aqui .
Respondeu 06/12/2011 em 18:06 2011-12-06 18:06 share
Django define o fuso horário do sistema com base em suas configurações time_zone variável. Isso pode levar a todos os tipos de confusão quando executar várias instâncias Django com diferentes configurações de time_zone.
Isto é o que Django faz:
A resposta acima:
"Descobri que colocando wsgi no modo daemon funciona"
Nao funciona para mim...
Eu acho que estou indo com não usando Django construído em TIME_ZONE mais.
Respondeu 12/05/2010 em 10:18 2010-05-12 10:18 share
fonte usuário Klaas van Schelven
Talvez o servidor está avaliando a datetime.now () na inicialização do servidor, tentar torná-lo preguiçoso através de um modelo ou usar uma variável no seu ponto de vista.