j'ai le script suivant j'utilise des données ferraille de mon site Web uni et l'insérer dans un GAE Dboptimisation de script python pour le moteur d'application
from mechanize import Browser
from BeautifulSoup import BeautifulSoup
import re
import datetime
__author__ = "Nash Rafeeq"
url = "http://webspace.apiit.edu.my/schedule/timetable.jsp"
viewurl = "http://localhost:8000/timekeeper/intake/checkintake/"
inserturl = "http://localhost:8000/timekeeper/intake/addintake/"
print url
mech = Browser()
try:
page = mech.open(url)
html = page.read()
except Exception, err:
print str(err)
#print html
soup = BeautifulSoup(html)
soup.prettify()
tables = soup.find('select')
for options in tables:
intake = options.string
#print intake
try:
#print viewurl+intake
page = mech.open(viewurl+intake)
html = page.read()
print html
if html=="Exist in database":
print intake, " Exist in the database skiping"
else:
page = mech.open(inserturl+intake)
html = page.read()
print html
if html=="Ok":
print intake, "added to the database"
else:
print "Error adding ", intake, " to database"
except Exception, err:
print str(err)
je me demande quelle serait la meilleure façon d'optimiser ce script donc je peux l'exécuter sur les serveurs du moteur de l'application. comme il est, il râpe maintenant plus de 300 entrées et prendre plus de 10 minutes pour insérer toutes les données sur ma machine locale
le modèle qui est utilisé pour stocker les données
class Intake(db.Model):
intake=db.StringProperty(multiline=False, required=True)
#@permerlink
def get_absolute_url(self):
return "/timekeeper/%s/" % self.intake
class Meta:
db_table = "Intake"
verbose_name_plural = "Intakes"
ordering = ['intake']
+1 pour la fracture et de la stratégie Conquer: à ne pas manquer! – jldupont
il est seulement grattage d'une url. ce qui est en train d'être gratté est une liste d'options qui compte plus de 300 entrées. Donc, si je le divise en tâches, il va être deux tâches. Je devine un pour le grattage et un pour l'insertion. cela fonctionnerait-il sans dépasser les limites de quota? ou est leur autre façon d'optimiser. noob total ici donc s'il vous plait portez sur moi –
Dans le code que vous avez collé, vous faites des demandes répétées dans une boucle for - donc ce n'est pas un seul fetch. –