Limpar um Set à meia noite [Python]

zebisnaga

Power Member
Boas pessoal,
Tenho um script que recebe informação de um endpoint, guarda essa informaçao e vai contando o nº de certas ocorrenciais num set.
Às 23h59 o tamanho do set é escrito num ficheiro e eu quero que as 00h00 esse set fique limpo para voltar a contar o nº de ocorrencias do dia seguinte.

Código:
def delayedCounter(delayedSet):
    now = datetime.now()
    date = now.strftime('%Y-%m-%d')
    hour = datetime.now().strftime('%H:%M')
    with open('delayedData.csv','a+') as file:
        if hour == '23:59':
            file.write(f'Nº : {len(delayedSet)} Data: {date}\n')
        elif hour == '00:00':
            delayedSet.clear()

Juntamente com isto estou a usar Flask para mostrar tudo numa webapp.
Eu faço o request de 1 em 1 minuto usando o apscheduler.
No entanto ele escreve no ficheiro delayedData.csv mas nao dá reset ao set.
Alguem sabe o que poderá ser? posso disponibilizar mais codigo se for preciso
 
Acho que o problema está no objecto datetime. Penso que para comparações não deves utilizar o strftime (string). Acho que deves criar um objecto datetime (constante com 23:59 e outro com 00:00) para fazeres as comparações.

O scheduler não é um relógio, em vez de == também deves usar >=.
 
Acho que o problema está no objecto datetime. Penso que para comparações não deves utilizar o strftime (string). Acho que deves criar um objecto datetime (constante com 23:59 e outro com 00:00) para fazeres as comparações.

O scheduler não é um relógio, em vez de == também deves usar >=.
Hmmmm mas na primeira condiçao eu consigo escrever na boa, quando chega as 00h00 é que não.
No entanto escreve 3x no ficheiro enquanto só devia de escrever uma vez.
Criar constante referes-te a criar uma variable para o 23:59 e outra para o 00:00?
 
Ok descobri o problema. Nao ha typos, esta tudo direito, escreve 3x porque tenho 3 workers no gunicorn ... no entanto nao sei se ha hipotese de colocar 1 desses workers a dar write no ficheiro e os outros 2 nao
 
Back
Topo