2015-09-10 20 views
7

Ho creato alcuni strumenti di report utilizzando Pywikibot. A mano a mano che le cose stanno crescendo, ci vogliono fino a 2 ore per finire i rapporti, quindi sto cercando di accelerare le cose. idee principali:Come velocizzare Pywikibot?

  • Disabilita limitazione, lo script è di sola lettura, in modo da page.get(throttle=False) gestisce questo
  • Cache
  • accesso diretto al database

Purtroppo non riesco a trovare molta documentazione sulla memorizzazione nella cache e accesso db. L'unico modo sembra immergersi nel codice e, beh, ci sono informazioni limitate sull'accesso al database in user-config.py. Se esiste, dove posso trovare una buona documentazione sulla cache di pywikibot e l'accesso diretto a db?

E, ci sono altri modi per velocizzare le cose?

risposta

5

Utilizzare PreloadingGenerator in modo che le pagine vengano caricate in lotti. O MySQLPageGenerator se si utilizza l'accesso diretto al DB.

Vedere gli esempi here.

1

Sembra che pagegenerators sia davvero un buon modo per velocizzare le cose. La migliore documentazione è directly in the source.

Anche lì non è chiaro dove collocare i dettagli della connessione MySQL. (Si aggiornerà sperabilmente.)

0

Utilizzare PreloadingGenerator da pagegenerators è il modo più semplice per accelerare alcuni programmi che necessitano di leggere molto dai wiki online, come già indicato da altre risposte.

modi alternativi sono:

  • Scarica un dump del wiki e leggere localmente. I progetti Wikimedia offrono discariche aggiornate una volta a settimana.
  • Crea un account su Wikimedia Labs e lavora da lì godendo di una connessione più veloce con Wikipedias e discariche aggiornate.

Modifica throttle potrebbe mettere in pericolo di ottenere bloccato se il wiki di destinazione ha una politica contro di essa - e ho paura Wikipedia ha una tale politica.

0

Sto usando l'opzione "-pt: 1" nel comando per effettuare una modifica al secondo.

Sono attualmente in esecuzione il comando

python pwb.py category add -pt:1 -file:WX350.txt -to:"Taken with Sony DSC-WX350" 

https://www.mediawiki.org/wiki/Manual:Pywikibot/Global_Options

+1

Si tratta di una linea di confine [risposta link-only] (// meta.stackexchange.com/q/8231). Dovresti espandere la tua risposta per includere più informazioni qui e utilizzare il link solo come riferimento. –