The problem is that the csv export requires the entire data to be stored in ram. You may want to try exporting using the shell and/or exporting a some data at the time.
On Jun 4, 2:22 pm, drayco <antrod...@gmail.com> wrote: > Today, when I try to download large csv archives, with admin, apache > crashed > > Well, I added this to httpd.conf > > WSGIDaemonProcess web2py user=drayco group=drayco \ > home=/home/drayco/webapps/seccion36/web2py \ > processes=1 maximum-requests=1000 > > But even with that, apache crashed equal. Any advice? > > On Jun 4, 12:20 am, drayco <antrod...@gmail.com> wrote: > > > Well, I followed the advise of Dr. Massimo, thank's a lot. > > > I updated all about my applications in web2faction, but a I did all > > manually, because when I used the script for install I can't used > > admin well. (install applications and local_import). > > I am using in my applications mod_wgsi 2.5 and python 2.5 > > I configured the httpd.conf with this > > > ServerRoot "/home/username/webapps/appname/apache2" > > > LoadModule dir_module modules/mod_dir.so > > LoadModule env_module modules/mod_env.so > > LoadModule setenvif_module modules/mod_setenvif.so > > LoadModule log_config_module modules/mod_log_config.so > > LoadModule mime_module modules/mod_mime.so > > LoadModule rewrite_module modules/mod_rewrite.so > > LoadModule wsgi_module modules/mod_wsgi.so > > > DirectoryIndex index.py > > DocumentRoot /home/username/webapps/appname/htdocs > > KeepAlive Off > > Listen PORTNUMBER > > LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" > > \"%{User-Agent}i\"" combined > > CustomLog /home/username/logs/user/access_appname.log combined > > ErrorLog /home/username/logs/user/error_appname.log > > ServerLimit 2 > > > SetEnvIf X-Forwarded-SSL on HTTPS=1 > > > WSGIScriptAlias / /home/username/webapps/appname/web2py/wsgihandler.py > > > I ran web2py manually one time, and them I ran apache, at this moment, > > everything is done with web2py version 1.78.3 even admin with https. > > > On Jun 3, 1:48 am, drayco <antrod...@gmail.com> wrote: > > > > Very probability, because i very new in web applications and python > > > > In the past,1 week ago, before we updated version of web2py, we > > > created 10589 registers with the same application. And now, the only > > > idea that i have, it is this, the new version of web2py. > > > > This are the controllers involved when we created one register > > > > #Beneficiarios > > > @auth.requires_login() > > > def update_benef(form): > > > import datetime > > > now = datetime.datetime.today() > > > beneficiario = db.benefs2[form.vars.id] > > > > keybenef=db(db.keys2benefs.keybenef==beneficiario.key_Registro).select() > > > > db(db.keys2benefs.id==keybenef[0].id).update(benefid=beneficiario.id) > > > coordinador = db.coordinadores[keybenef[0].coordid] > > > fechas = > > > db((db.fechas.fechaTramite>now)&(db.fechas.regional==coordinador.regional)&(db.fechas.full<db.fechas.cargaMax)).select(db.fechas.ALL,orderby=db.fechas.fechaTramite) > > > > db(db.benefs2.id==beneficiario.id).update(coordid=keybenef[0].coordid) > > > db(db.benefs2.id==beneficiario.id).update(fechasid=fechas[0].id) > > > db(db.fechas.id==fechas[0].id).update(full=fechas[0].full+1) > > > > #Beneficiarios > > > @auth.requires_login() > > > def update_benef2(form): > > > now = request.now > > > benef = db.benefs2[form.vars.id] > > > keybenef=db(db.keys2benefs.keybenef==benef.key_Registro).select() > > > [0] > > > db(db.keys2benefs.id==keybenef.id).update(benefs2_id=benef.id) > > > coord = db.coordinadores[keybenef.coordinador_id] > > > dates2 = > > > db((db.dates2.start>now)&(db.dates2.regional_id==coord.regional_id)&(db.dates2.xdia>db.dates2.cargados)). > > > \ > > > select(db.dates2.ALL,orderby=db.dates2.start)[0] > > > benefs = > > > db(db.benefs2.dates2_id==dates2.id).select(db.benefs2.id,db.benefs2.tramite,db.benefs2.entrega,db.benefs2.tramite.count(), > > > \ > > > orderby=db.benefs2.tramite,groupby=db.benefs2.tramite) > > > if len(benefs)>0: > > > if > > > benefs[len(benefs)-1]._extra[db.benefs2.tramite.count()]<dates2.xhora: > > > tramite=benefs[len(benefs)-1].benefs2.tramite > > > entrega=benefs[len(benefs)-1].benefs2.entrega > > > else: > > > from datetime import timedelta > > > HOUR = timedelta(hours=1) > > > tramite=benefs[len(benefs)-1].benefs2.tramite+HOUR > > > entrega=benefs[len(benefs)-1].benefs2.entrega+HOUR > > > else: > > > tramite=dates2.start > > > entrega=dates2.inicio > > > > db(db.benefs2.id==benef.id).update(dates2_id=dates2.id,tramite=tramite,entrega=entrega,coordnador_id=keybenef.coordinador_id) > > > db(db.dates2.id==dates2.id).update(cargados=dates2.cargados > > > +1,xcargar=dates2.xdia-(dates2.cargados+1)) > > > > @auth.requires_login() > > > def crea_benef(): > > > return dict(form=crud.create(db.benefs2, next=URL(r=request, > > > f='benefs2_regist'),onaccept=update_benef2)) > > > > And this when we try to show as a list > > > > @auth.requires_login() > > > def benefs2_regist(): > > > if len(request.args): page=int(request.args[0]) > > > else: page=0 > > > items_per_page=25 > > > limitby=(page*items_per_page,(page+1)*items_per_page+1) > > > benefs=db(db.benefs2.creadoPor==auth.user.id).\ > > > > select(db.benefs2.id,db.benefs2.names,db.benefs2.apelPater,db.benefs2.apelMater, > > > \ > > > db.benefs2.tramite,orderby=~db.benefs2.id,limitby=limitby) > > > nobenefs=db(db.benefs2.creadoPor==auth.user.id).count() > > > return > > > dict(beneficiarios=benefs,page=page,items_per_page=items_per_page,nobenefs=nobenefs) > > > > This are the views involved when we created one register > > > > {{extend 'layout.html'}} > > > <h3>Registre los datos del Beneficiario y el Trabajador > > > correspondiente</h3> > > > {{=form}} > > > > {{extend 'layout.html'}} > > > <h3>Usted registro a {{=nobenefs}} Beneficiarios, organizados en > > > bloques de {{=items_per_page}}</h3> > > > <h3>De clic sobre el nombre del beneficiario para ver el lugar, los > > > requisitos, etc. y ver el folio completo para imprimir</h3> > > > <ul>{{for i,benef in enumerate(beneficiarios):}} > > > {{if i==items_per_page: break}} > > > {{=LI(A('Folio ',benef.id,' ',benef.names,' > > > ',benef.apelPater,' ',benef.apelMater,' fecha de > > > tramite:',benef.tramite, _href=URL(r=request, f='show_benef', > > > args=benef.id)))}} > > > {{pass}}</ul> > > > {{if page:}} > > > <a href="{{=URL(r=request,args=[page-1])}}">anteriores</a> > > > {{pass}} > > > {{if len(beneficiarios)>items_per_page:}} > > > <a href="{{=URL(r=request,args=[page+1])}}">siguientes</a> > > > {{pass}} > > > > On Jun 2, 9:01 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > > > why is counting records "select count(*) ...." crashing your mysql > > > > database? It seems to me the problem is not the web2py version. > > > > > On Jun 2, 7:03 pm, drayco <antrod...@gmail.com> wrote: > > > > > > Thank's a lot Dr. Massimo > > > > > > do you use apache? Yes > > > > > mod_wsgi? Yes > > > > > do you use the built-in web server? No > > > > > do you see memory leaks? No > > > > > do you have web2py cron or on off? No > > > > > > This is the firts error: > > > > > > Traceback (most recent call last): > > > > > File "gluon/restricted.py", line 178, in restricted > > > > > exec ccode in environment > > > > > File "/home/drayco/webapps/seccion36/web2py/applications/init/ > > > > > controllers/default.py", line 134, in <module> > > > > > File "gluon/globals.py", line 96, in <lambda> > > > > > self._caller = lambda f: f() > > > > > File "gluon/tools.py", line 2036, in f > > > > > return action(*a, **b) > > > > > File "/home/drayco/webapps/seccion36/web2py/applications/init/ > > > > > controllers/default.py", line 101, in crea_benef > > > > > return dict(form=crud.create(db.benefs2, next=URL(r=request, > > > > > f='benefs2_regist'),onaccept=update_benef2)) > > > > > File "gluon/tools.py", line 2623, in create > > > > > deletable=False, > > > > > File "gluon/tools.py", line 2567, in update > > > > > onvalidation=onvalidation, keepvalues=keepvalues): > > > > > File "gluon/sqlhtml.py", line 870, in accepts > > > > > onvalidation, > > > > > File "gluon/html.py", line 1328, in accepts > > > > > status = self._traverse(status) > > > > > File "gluon/html.py", line 456, in _traverse > > > > > newstatus = c._traverse(status) and newstatus > > > > > File "gluon/html.py", line 456, in _traverse > > > > > newstatus = c._traverse(status) and newstatus > > > > > File "gluon/html.py", line 456, in _traverse > > > > > newstatus = c._traverse(status) and newstatus > > > > > File "gluon/html.py", line 456, in _traverse > > > > > newstatus = c._traverse(status) and newstatus > > > > > File "gluon/html.py", line 463, in _traverse > > > > > newstatus = self._validate() > > > > > File "gluon/html.py", line 1120, in _validate > > > > > (value, errors) = validator(value) > > > > > File "gluon/validators.py", line 413, in __call__ > > > > > if self.dbset(field == value).count(): > > > > > File "gluon/sql.py", line 3224, in count > > > > > return self.select('count(*)')[0]._extra['count(*)'] > > > > > File "gluon/sql.py", line 3096, in select > > > > > rows = response(query) > > > > > File "gluon/sql.py", line 3091, in response > > > > > db._execute(query) > > > > > File "gluon/sql.py", line 932, in <lambda> > > > > > self._execute = lambda *a, **b: self._cursor.execute(*a, **b) > > > > > File "build/bdist.linux-i686/egg/MySQLdb/cursors.py", line 166, in > > > > > execute > > > > > self.errorhandler(self, exc, value) > > > > > File "build/bdist.linux-i686/egg/MySQLdb/connections.py", line 35, > > > > > in defaulterrorhandler > > > > > raise errorclass, errorvalue > > > > > OperationalError: (1053, 'Server shutdown in progress') > > > > > > And 1 second after: > > > > > > Traceback (most recent call last): > > > > > > > ... > > read more »