Skip to content
This repository has been archived by the owner on Oct 2, 2023. It is now read-only.

Enviar uma mensagem para o Telegram com informações sobre novos registros #381

Open
anapaulagomes opened this issue Aug 9, 2021 · 2 comments

Comments

@anapaulagomes
Copy link
Contributor

anapaulagomes commented Aug 9, 2021

Todos os dias raspamos dados e graças ao Spidermon somos notificados em nosso canal no Telegram. Porém, itens raspados não significa itens novos no banco de dados. É importante saber quantos foram inseridos e atualizados todos os dias, assim podemos ter uma ideia se estamos salvando os dados ou se eles estão se perdendo por algum erro.

Resumindo, a ideia é criar um comando que:

  • consulta por model quantos itens foram criados (created_at) ou atualizados (updated_at) ou removidos (updated_at e deleted=True)
  • envia uma mensagem para o nosso canal no Telegram com essas informações
@exageraldo
Copy link
Member

@anapaulagomes a classe responsavel por mandar as mensagens no telegram é a CustomSendTelegramMessage, certo!?

Estava pensando se a gente poderia começar essa tarefa adicionando o quantitativo de atualizados e criados na mensagem montada dentro do metodo get_message, ficando algo mais ou menos assim:

# qnd_criados_hoje = MODEL.objects.filter(created_at=DATA_DE_HOJE).count()
# qnd_atualizados_hoje = MODEL.objects.filter(updated_at=DATA_DE_HOJE).count()


message = "\n".join(
            [
                f"{emoji} Spider `{self.data.spider.name}` {stats['finish_reason']}",
                f"- Duração em segundos: {round(stats['elapsed_time_seconds'], 1)}",
                f"- Itens raspados: {n_scraped_items}",
                f"- Erros: {number_of_failures}",
                f"- Exceções: {number_of_exceptions}\n{exceptions_message}",
                # linha mostrando o quantitativo de itens criados,
                # linha mostrando o quantitativo de itens atualizados,
            ]

Cê poderia explicar um pouco sobre essa ideia de "criar um comando"?

@anapaulagomes
Copy link
Contributor Author

Criar um comando seria criar um script independente com Django (eles estão sempre na pasta management/commands de cada app). Como usamos background tasks pra poder processar e criar os itens no banco, pode ter alguma race condition e os números ficarem incorretos (mostrar menos do que realmente teremos criado e atualizado no final do processamento).

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants