Topic: tanti xml da scaricare e controllare  (Letto 1258 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline nkint

  • python neanderthalensis
  • ****
  • Post: 368
  • Punti reputazione: 1
    • Mostra profilo
tanti xml da scaricare e controllare
« il: Marzo 10, 2011, 20:36 »
ciao a tutti
devo cercare di creare un database da ..alcuni xml

la logica è semplice, che di più non si può:
- scarico l'xml
- ne faccio il parsing da xml a oggetto python (il tag <foo> lo metto in Entry.foo)
- lo metto nel database

riassunte da queste poche righe di codice:
[codice]   
   provider = XMLProvider(url, ...)
   proxy = DatabaseProxy( ... )

   for entity in provider.getdata():
      print {0} recived\n".format(entity)
      proxy.manage(entity)
[/codice]

il problema è che gli xml sono tantini..
circa un 500 000, uno più uno meno

esiste già un programma che fa questo sporco lavoro, ed è scritto in php e ci mette dai 4 ai 6 giorni
sto cercando di farlo in python per velocizzare la questione

cercando in giro mi sono fatto queste impressioni:
a) riscrivere la cosa in maniera sequenziale (com'è scritta in php) non penso possa dare molto valore aggiunto
b) sicuramente fare degli object pool
c) (un'approccio potrebbe essere..) creare dei thread che scaricano xml e li mettono su una coda,
    creare dei thread che leggono i dati dalla coda e se la vedono col db
    e in un qualche modo limitare la coda
l'ultimo punto, che mi sembra forse il più interessante, presenta anche molti lati negativi (sincronizzare la coda? devo anche pensare a sincronizzare le chiamate sql ad db immagino.. altri inconvenienti?)

altri approcci? qualche consiglio?
OVVIAMENTE non sono a corrente dell'esistenza di qualche infrastruttura che mi possa aiutare (anche se penso che sicuramente dentro twisted ci sia qualcosa che può essermi utile) e sto cercando..

Offline crap0101

  • python sapiens sapiens
  • ******
  • Post: 1.529
  • Punti reputazione: 5
  • Long Live The New Flesh
    • Mostra profilo
    • crap0101 washroom
Re: tanti xml da scaricare e controllare
« Risposta #1 il: Marzo 12, 2011, 09:44 »
Una cosa che non mi è chiara: gli url da cui scaricare li sai già in partenza?
pensavo ad usare multiprocessing, magari dividendo in N processi per range alfabetico.

Offline nkint

  • python neanderthalensis
  • ****
  • Post: 368
  • Punti reputazione: 1
    • Mostra profilo
Re: tanti xml da scaricare e controllare
« Risposta #2 il: Marzo 12, 2011, 22:21 »
ah so gli id..
sono qualcosa come:

url/api/1
url/api/2
url/api/3
url/api/4

e così via!
quindi range non alfabetico ma numerico, è la stessa cosa!
ora provo a guardare multiprocessing, grazie!

Offline Markon

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 4.104
  • Punti reputazione: 5
    • Mostra profilo
    • Neolithic
Re: tanti xml da scaricare e controllare
« Risposta #3 il: Marzo 31, 2011, 12:05 »
Che DB stai usando?
Oracle ad esempio fornisce delle utility per importare gli xml (tra le altre cose).

Ma questi XML hanno tutti la stessa struttura?
Perchè in tal caso potrebbe tornarti utile questo.