2012-01-10 5 views
13

La mia attività esegue la ricerca per indicizzazione dei risultati della ricerca di google utilizzando il webkit headless (PyQt4.QtWebkit) in python. Il modulo stava analizzando bene i risultati usando PyQt4. Dovrei dovere eseguire questo script in amazon ec2.So, dovrei usare Xvfb (nessun x server in ec2).xvfb errore di esecuzione in ubuntu 11.04

Allo stesso tempo, il mio modulo deve essere eseguita in un loop.So, stava funzionando benissimo per qualche iterations.After qualche modulo loop imbatte in "-run Xvfb: errore: Xvfb failed to start"

Come dovrebbe risolvere?

Questo è il mio looping:

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 

principale (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 recupererà tutti i risultati HTML usando PyQt4. Come evitare il mancato funzionamento di looping di xvfb?

+0

sto utilizzando l'istanza del server Amazon EC2 – Nava

risposta

27

È necessario aggiungere il parametro --auto-servernum per xvfb-run. In caso contrario, tenta di generare spa Xvfb sullo stesso display (per impostazione predefinita :99), che non riuscirà se ne è già in esecuzione uno.

10

Esegui come questo,

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

questa grande opera. – Jim

+0

Sono sorpreso perché funziona ... stai passando argomenti in conflitto: '--auto-servernum' dice all'utente di visualizzare un display libero e' --server-num = 1' tell is use display 1 .... usa un arg o l'altro a seconda delle tue esigenze. –