2012-01-10 18 views
13

Moje zadanie polega na przeszukiwaniu wyników wyszukiwania Google przy użyciu bezgłowego zestawu stron internetowych (PyQt4.QtWebkit) w pythonie. Moduł przeszukiwał wyniki dobrze przy użyciu PyQt4. Powinienem wykonać ten skrypt w Amazon ec2.So, powinienem użyć Xvfb (bez x serwera w ec2).Błąd uruchomienia xvfb w Ubuntu 11.04

Jednocześnie mój moduł ma być wykonywany w loop.So, to działa dobrze przez jakiś iterations.After jakiś moduł pętli biegnie do „Xvfb-run: error: Xvfb powiodło się”

Jak to ma rozwiązać?

To mój pętli:

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 pobierze wszystkie wyniki html za pomocą PyQt4. Jak uniknąć zapętlenia xvfb dla zapętlenia?

+0

Używam wystąpienie serwera Amazon EC2 – Nava

Odpowiedz

27

Musisz dodać parametr --auto-servernum dla xvfb-run. W przeciwnym razie próbuje odradzić Xvfb na tym samym ekranie (domyślnie :99), co nie powiedzie się, jeśli masz już uruchomiony.

10

Run tak,

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

to działa świetnie. – Jim

+0

Jestem zaskoczony, że to działa ... przechodzisz sprzeczne argumenty: '--auto-servernum' mówi użytkownikowi o wolnym wyświetlaniu, a' --server-num = 1' tell is use display 1 .... użyj jednego arg lub drugiego w zależności od twoich potrzeb. –

Powiązane problemy