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
| 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
|
Onde ver na sua conta
As versões de Python que pode usar são as que o seu cPanel oferece, por isso leia-as lá: abra Setup Python App e comece a criar uma aplicação, e as versões disponíveis aparecem no campo da versão. Se o ícone Setup Python App não existir no seu cPanel, pergunte-nos se o seu plano o pode ter, porque a receita acima depende dele. Para saber se a conta tem também linha de comandos, procure Terminal ou SSH Access no cPanel: se um deles aparecer, a conta tem SSH. Se precisa de uma versão de Python em concreto ou de controlo total do ambiente, um VPS dá-lhe acesso total por SSH e deixa-o instalar o que precisar.
PRODUTO RECOMENDADO Alojamento de sites com cPanel Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde $6.60/mês (plano de 3 anos, com cupão) Ver planos |