Como posso usar o pygi Webkit em uma instalação sem servidor?

1

Eu tenho um conjunto de scripts que funciona no meu laptop que funciona bem contanto que eu inicie em uma sessão X, mas se eu estiver executando em uma instalação de servidor sem cabeçalho eu recebo um monte de falhas críticas de Gtk. Tenho certeza que a solução é usar o xvfb, mas não consigo encontrar um exemplo de trabalho.

Assistência apreciada.

    
por RobotHumans 24.11.2013 / 17:57

1 resposta

2

Eu segui este artigo para executar um Firefox baseado em testes em um servidor no início deste ano. O Xvfb-stuff é bastante simples, só precisamos nos certificar de desativar os controles de acesso para que o X não fique todo arrogante. Algo como isso deve fazer você ir:

sudo apt-get install xvfb
sudo Xvfb :10 -ac
export DISPLAY=:10
# run your gubbins

Embora você deva observar que isso não fornecerá tudo o que uma sessão de desktop real possui. Se você entrar nessa situação (onde precisa de um desktop real), talvez valha a pena separar isso em uma máquina virtual no topo do servidor. Um pouco menos ineficiente, mas com quilômetros mais portáteis.

Edite de Abraão:
Eu acabei usando a metodologia, mas eu queria em uma tarefa de gerenciamento de python. Minha implementação fez a mesma coisa, mas parecia mais com isso:

from django.core.management.base import BaseCommand, CommandError
import subprocess, os
from multiprocessing import Process

def run():
    sub = Process(target=subprocess.call, args=(('Xvfb', ':10', '-ac',), ))
    sub.start()
    env = os.environ.copy()
    env['DISPLAY'] = ":10"
    tasks = ('random','management','commands','thatneedDISPLAY:X')
    for task in tasks:
        p = subprocess.call(['python','manage.py',task],env=env)
    sub.terminate()

class Command(BaseCommand):
    def __init__(self):
        BaseCommand.__init__(self)

    args = 'none'
    help = '''Run all daily tasks.'''

    def handle(self, *args, **options):
        run()
    
por Oli 24.11.2013 / 18:56