Como ajustar o timezone nas aplicações
Os servidores devem esta com timezone UTC e as aplicações devem ter a opção de definir os seus timzones. Pode ser utilizado o TZ como variável global no ambiente ou indivialmente por aplicação. Lembrando que as aplicações estão sendo nacionalizadas.
Opção 1 - TZ
Configurar a aplicação para utilizar o TZ + Utilizar a variável TZ na env da aplicação e instalar o pacote tzdata
TZ=America/Fortaleza + Segue exemplo de instalação via Dockerfile para Alpine linux. Ulilizar no 2º Stage:
# 2º Stage
FROM registry.geomk.com.br/python_geomk/3.6-prd
ENV PYTHONUNBUFFERED 1
ENV VERSION v1.12.4
# Packages required
RUN apk update && \
apk add --no-cache \
pcre \
libjpeg \
tzdata
- Desta forma o shell do Linux dentro do container apresentará a data e hora alinhados com o TZ declarado.
Opção 2 - Data no Python
- Muita atenção com o datetime e como ele pode ser importado e que retornos podem ser obtidos (Timezone ou UTC)
# python manage.py shell
>>> from django.utils.timezone import datetime
>>> datetime.now()
datetime.datetime(2019, 9, 5, 23, 55, 55, 839345)
>>> from django.utils import timezone
>>> timezone.now()
datetime.datetime(2019, 9, 5, 16, 56, 53, 941555, tzinfo=<UTC>)
>>> timezone.datetime.now()
datetime.datetime(2019, 9, 5, 23, 57, 2, 783737)
- Importante utilizar o normalize. Link para consulta: Django - Time zones
# python manage.py shell
>>> from utils.time import normalize
>>> from django.utils import timezone
>>> normalize(timezone.now())