Need a little help in code review (a function eating up all memory)
I wonder if somebody could help me.
The following code has eaten up ~1,5GB ram and after ended successfully it is not released :(
file_properties table has 137314 rows.
Model:
Field( 'name', 'string',
label = 'Fájlnév' ,
),
Field( 'content', 'upload',
uploadseparate = True,
autodelete = True,
label = 'Aláírt fájl',
),
Field( 'status', 'string',
label = 'Állapot',
requires = IS_IN_SET( ['empty', 'notsigned', 'senttosign', 'signed'],
[ 'Üres', 'Aláiratlan', 'Aláírásra elküldve', 'Aláírt'] ),
represent = lambda r, row:T( r )
),
Field( 'state', 'string',
label = 'Státusz',
requires = IS_IN_SET( ['ok', 'error'],
[ 'Rendben', 'Hiba'] ),
represent = lambda r, row:T( r )
),
Field( 'data_count', 'integer',
label = 'Adat bejegyzések',
requires = IS_NOT_EMPTY(),
default = 0,
),
Field( 'dirname', 'string',
label = 'Könyvtár név' ,
requires = IS_NOT_EMPTY(),
),
Field( 'md5sum', 'string',
label = T( 'MD5 Sum' ),
represent = lambda md5sum, junk: '[%s]' % md5sum,
writable = False ),
auth.signature,
format = '%(dirname)s/%(name)s (%(id)s)'
)
db.files_store.created_on.readable = True
db.define_table( 'file_properties',
Field( 'files_store_id', db.files_store,
label = 'Aláírt fájl' ,
),
Field( 'kezdo_oldal', 'integer',
label = 'Számla kezdő oldal',
requires = IS_NOT_EMPTY(),
),
Field( 'oldalszam', 'integer',
label = 'Számla oldalainak száma',
requires = IS_NOT_EMPTY(),
),
Field( 'szamla_sorszama', 'string',
label = 'Számla sorszáma',
#requires = IS_NOT_IN_DB( db, 'file_properties' ),
unique = True,
),
Field( 'ugyfel_azonosito', 'string',
label = 'Ügyfél azonosító',
requires = IS_NOT_EMPTY(),
),
Field( 'folyoszamla_azonosito', 'string',
label = 'Folyószámla azonosító',
requires = IS_NOT_EMPTY(),
),
Field( 'teljesites_idopontja', 'date',
label = 'Teljesítés időpontja',
requires = IS_DATE( '%Y.%m.%d.' ) ),
auth.signature,
),
Controller:
lista = list()
last_row = None
next_page_number = 0
for row in db( db.file_properties.id > 0 ).select(
orderby = ( db.file_properties.files_store_id,
db.file_properties.id )
):
if last_row:
if last_row.files_store_id == row.files_store_id:
if next_page_number > row.kezdo_oldal:
row.update_record( kezdo_oldal = next_page_number )
else:
last_row = row
else:
last_row = row
next_page_number = row.kezdo_oldal + row.oldalszam
lista.append( TR(
TD( row.id ),
TD( row.files_store_id.name ),
TD( row.kezdo_oldal ),
TD( row.oldalszam )
) )
lista = TABLE( *lista )
return dict( lista = lista )
View:
{{block statusbar}}
<h4>Admin felület</h4>
{{end}}
<h2>AdjustPage</h2>
{{=lista}}
RSS Feed