O script Python é executado enquanto a tela está bloqueada

3

Eu tenho um script python que parece estar falhando em continuar executando seu while True: ... sleep() loop

meu código está no link

O que acontece é que eu inicio automaticamente o python na inicialização do sistema executando ...

start.sh

#! /bin/bash
sleep 120
cd ${0%/*}
conky -d -c ~/.conkyrc2
python profitability.py &

cd $ {0% / *} leva-me ao directório correcto onde acabo por rentabilizar.py

profitability.py eventualmente é executado

while True:
    ....
    time.sleep(2000)

Isso funciona em cerca de 33,3 minutos. Este script python parece rodar corretamente desde que minha tela não trave. Após um bloqueio de tela, meu script deixa de ser executado, embora ainda haja um processo python.

Eu estou escrevendo isso para ser pelo menos um pouco portátil para outros computadores Linux e não pode ter desabilitar o bloqueio de tela ou manter um terminal aberto para python como pré-requisitos:)

Há muita coisa que eu não entendo, tenho certeza, estou aberto a muitas opções diferentes aqui. Qualquer ajuda é apreciada.

Eu executei este script no terminal até ele sair. Eu tive um erro de urllib devido à má conexão com a internet. Eu envolvi o trecho de código do urllib2 em uma tentativa: except: statement, que corrigiu esse problema. Embora isso possa ter sido a causa do fracasso do meu script, confirmei através de muitos testes que meu script ainda falha se eu fechar meu terminal e bloquear minha tela.

Implementei o código encontrado em um URL postado abaixo, o que funciona muito bem enquanto uso meu computador, mas se eu decidir bloquear e sair, os eventos programados não acontecem. link

Estou usando o Ubuntu GNOME 13.10 com o gnome 3.

    
por xdaimon 09.01.2014 / 20:24

1 resposta

1

Para a sua segunda pergunta, você pode usar a magia double forking para separar o processo filho do pai, resultando em um processo órfão e imparável (a menos que seja morto). Também é chamado de daemonizing. Eu acho que um daemon pode ser capaz de resolver seus problemas em sua segunda pergunta.

veja mais em: link

    
por 10.01.2014 / 09:13