É o timestamp do Unix incremental?

2

Eu tenho um programa Python simples que coleta dados de um sensor. O programa enviará os dados juntamente com o registro de data e hora do sistema para um servidor remoto por meio da solicitação REST POST.

Se a solicitação POST falhar, os dados, juntamente com o registro de data e hora, serão salvos em um arquivo CSV. Quando a conexão com a Internet estiver disponível novamente, os dados no arquivo CSV serão enviados para o servidor remoto.

No servidor remoto, eu tenho um aplicativo PHP simples que gerará um gráfico a partir dos dados coletados.

Minha pergunta: o timestamp do Unix é incremental e único? É seguro classificar o registro de data e hora em ordem crescente para ver a sequência de dados coletados?

    
por NAT3863 23.05.2014 / 12:32

1 resposta

1

Não há garantia de que os timestamps são incrementais. A maneira normal de obter a hora do sistema é gettimeofday que não oferece nenhuma garantia.

Na prática, gettimeofday será monotônico, a menos que o administrador do sistema ou um erro de configuração faça com que o relógio do sistema seja alterado. gettimeofday tem, na melhor das hipóteses, uma resolução de microssegundos. Isso não garante que o valor será atualizado se entre duas chamadas para gettimeofday forem mais de 1µs separadas, mas quanto maior o intervalo entre as chamadas, maior a probabilidade de alteração do valor.

Alguns sistemas suportam um relógio monotônico, lidos chamando clock_gettime com o ID do relógio %código%. O Python fornece acesso a esse tempo por meio de CLOCK_MONOTONIC desde a versão 3.3. Este relógio é monótono entre as reinicializações e não há garantia de que as chamadas sucessivas retornam valores distintos, embora ambas as propriedades sejam altamente prováveis.

Se você quiser uma garantia absoluta de que algum campo é incremental, mantenha um contador em um campo separado.

    
por 24.05.2014 / 03:20

Tags