web-dev-qa-db-ja.com

ヘッドレスサーバーのインストールでpygiWebkitを使用するにはどうすればよいですか?

Xセッションで起動している限り、ラップトップで動作する一連のスクリプトが正常に動作しますが、ヘッドレスサーバーのインストールで実行している場合、Gtkから大量の重大な障害が発生します。解決策はxvfbを使用することだと確信していますが、実際の例が見つかりません。

支援に感謝します。

1
RobotHumans

今年初めにサーバー上でFirefoxベースのテストフレームワークを実行するために この記事 に従いました。 Xvfbのものは非常に単純です。Xがすべての問題を起こさないように、アクセス制御をオフにする必要があります。このような何かがあなたを動かすはずです:

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

ただし、これは実際のデスクトップセッションにあるすべてのものを提供するわけではないことに注意してください。そのような状況(実際のデスクトップが必要な場合)に遭遇した場合は、それをサーバー上の仮想マシンに分離する価値があるかもしれません。少し非効率的ですが、はるかにポータブルです。

アブラハムから編集:
方法論を使用することになりましたが、python管理タスクでそれが必要でした。私の実装は同じことをしましたが、次のようになりました。

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()
2
Oli