Ошибка запуска xvfb в Ubuntu 11.04 - PullRequest
13 голосов
/ 10 января 2012

Моя задача - сканировать результаты поиска Google, используя безголовый webkit (PyQt4.QtWebkit) в python.Модуль хорошо сканировал результаты, используя PyQt4. Мне нужно было выполнить этот скрипт в amazon ec2.Так, мне нужно было использовать Xvfb (без сервера x в ec2).

Вв то же время мой модуль должен быть выполнен в цикле. Так, он работал нормально в течение нескольких итераций. После того, как какой-то циклический модуль запускается в "xvfb-run: error: Xvfb не удалось запустить"

Как это решить?

Это мой цикл:

for i in range(10):
    try:
        query_dict["start"] = i * 10
        url = base_url + ue(query_dict)
        flag = True
        while flag:
            parsed_dict = main(url)
            time.sleep(8.4)
            flag = False
    except:
        pass

main (url):

def main(url):
    cmd = "xvfb-run python /home/shan/temp/hg_intcen/lib/webpage_scrapper.py"+" "+str(url)
    print "Cmd EXE:"+ cmd
    proc = subprocess.Popen(cmd,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
    proc.wait()
    sys.stdout.flush()
    result = proc.stdout.readlines()
    print "crawled: ",result[1]
    return result

webpage_scrapper будет получать все htmlрезультаты с использованием pyqt4.Как избежать сбоя цикла xvfb?

Ответы [ 2 ]

27 голосов
/ 16 января 2012

Вам необходимо добавить параметр --auto-servernum для xvfb-run.В противном случае он пытается создать Xvfb на том же дисплее (по умолчанию :99), что завершится ошибкой, если у вас уже есть один запущенный.

10 голосов
/ 06 февраля 2012

Беги так,

xvfb-run --auto-servernum --server-num=1 python webpage_scrapper.py http://google.com
...