Как я могу использовать 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()