Как я могу использовать Pygi Webkit при установке безголового сервера?

У меня есть набор сценариев, который работает на моем ноутбуке, и он прекрасно работает, пока я загружаюсь в сеанс X, но если я запускаю установку без сервера, я получаю множество критических сбоев от Gtk. Я уверен, что решение состоит в том, чтобы использовать xvfb, но я не могу найти работающий пример.

Помощь приветствуется.

1 ответ

Решение

Я следовал этой статье для запуска тестовой среды на основе Firefox на сервере в начале этого года. Xvfb-штука довольно проста, нам просто нужно убедиться, что контроль доступа отключен, чтобы X не получал всю нагрузку. Что-то вроде этого должно помочь вам:

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

Хотя вы должны заметить, что это не обеспечит все, что есть в реальной сессии рабочего стола. Если вы когда-нибудь попадете в такую ​​ситуацию (где вам нужен настоящий рабочий стол), возможно, стоит разделить это на виртуальную машину поверх сервера. Чуть менее неэффективно, но гораздо более портативно.

Править от Авраама:
Я начал использовать методологию, но хотел этого в задаче управления питоном. Моя реализация сделала то же самое, но это выглядело примерно так:

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()
Другие вопросы по тегам