Correr um script Python à hora marcada no cPanel

Para correr um script Python todos os dias ou a cada hora no cPanel, a receita é: criar uma aplicação Python (só para ter o ambiente virtual com as suas bibliotecas) e fazer a tarefa cron chamar o Python desse ambiente, com o caminho completo do script. O erro mais comum é chamar o Python do sistema, que não tem as bibliotecas que instalou.

Passo a passo

1 Crie a aplicação em «Setup Python App». Escolha a versão do Python e uma pasta para a aplicação. Não precisa de ser um site: a aplicação serve de ambiente. Veja Python no cPanel: ambientes virtuais e pip.
2 Instale as bibliotecas dentro desse ambiente, com o pip da própria aplicação e um ficheiro requirements.txt. Fora do ambiente, as bibliotecas não ficam onde o script as vai procurar.
3 Ponha o script numa pasta fora de public_html, e escreva nele caminhos completos para todos os ficheiros que lê ou grava. O cron não arranca na sua pasta.
4 Descubra o Python do ambiente. No ecrã da aplicação aparece o comando que o activa, com um caminho que termina em bin/activate. Copie esse caminho e troque activate por python: é o Python desse ambiente.
5 Escreva a linha do cron: o caminho do Python do ambiente, um espaço, o caminho do script, e >> /home/CONTA/job.log 2>&1 no fim. Para o horário, veja exemplos de horários cron.
6 Teste a mesma linha à mão no Terminal, se a conta o tiver, antes de agendar.

O que costuma correr mal

Sintoma Causa O que fazer
ModuleNotFoundError só no cron O cron usou o Python do sistema. Use o caminho do Python do ambiente virtual.
Não encontra um ficheiro de configuração Um caminho relativo. Caminhos completos, ou calcule a pasta a partir do próprio script.
O registo fica vazio ou só aparece no fim A saída é guardada em memória e só sai quando o programa acaba. Corra com python -u ou escreva flush=True nos print.
Duas execuções ao mesmo tempo A primeira ainda não acabou quando começa a segunda. Alargue o intervalo, ou use um ficheiro de bloqueio.
As variáveis da aplicação não existem no cron As variáveis definidas no ecrã da aplicação são da aplicação, não do cron. Leia a configuração de um ficheiro fora de public_html.
Scripts longos e pesados não pertencem a um plano partilhado. Têm limites de CPU, memória e processos, e um script que os ultrapasse é interrompido. Divida o trabalho em partes curtas, ou use um VPS. Veja os limites de que ninguém fala.
Ponha uma linha de fim no registo, com a data e o resultado. Um registo que termina é a prova de que o script chegou ao fim e não foi cortado a meio.

Quer um plano com Python e cron incluídos no cPanel? Veja os planos de hospedagem.

Ver os planos

VEJA TAMBÉM

Python no cPanel: ambientes virtuais e pip

Tarefas cron: para que servem e como criar uma

Uma tarefa cron que não corre ou não envia nada: lista de verificação

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?