thanks Massimo, but ...
when I use the suggested order, I get
Traceback(most recent call last):
File"gluon\restricted.pyc",line217,inrestricted
File"P:/web2py_2_8_2/applications/SolarPower_Molenhoek/controllers/default.py"
<http://127.0.0.1:8000/admin/edit/SolarPower_Molenhoek/controllers/default.py>,line1445,in<module>
File"gluon\globals.pyc",line372,in<lambda>
File"P:/web2py_2_8_2/applications/SolarPower_Molenhoek/controllers/default.py"
<http://127.0.0.1:8000/admin/edit/SolarPower_Molenhoek/controllers/default.py>,line1438,incall
returnservice()
File"gluon\tools.pyc",line4911,in__call__
File"gluon\tools.pyc",line4549,inserve_csv
File"gluon\tools.pyc",line4247,inuniversal_caller
AttributeError:'CacheAction'object has no attribute'func_code'
On 12-Jan-15 05:04, Massimo Di Pierro wrote:
The order of the decorators is important. This:
@cache('service_platdak', 300, cache.ram )
@service.csv
def service_platdak(): ....
registers the service (without caching) and the defined a cached
action (normal action). This:
@service.csv
@cache('service_platdak', 300, cache.ram )
def service_platdak(): ....
defined a cached action (normal cached action) and then exposes the
cached actions as csv service.
On Sunday, 11 January 2015 14:02:32 UTC-6, aapaap wrote:
thanks Paolo and Leonel,
things seems even weirder than I had in mind:
1. changing the order of the decorators: the program doesn't work
anymore, there's no csv response anymore
2. the code form Leonel works, as long as you use it as a plain
example
Now I made 2 identical csv services, both with a cache decorator
(code below).
The first one is called as a procedure in a controller
* response.baapje = service_platdak2()**
*
and the other one is used a csv file for the javascript DyGraph in
the viewer
*<script type="text/javascript">**
** graph2 = new Dygraph(**
** document.getElementById ( "pygraph2" ),**
** "../call/csv/service_platdak",**
** {**
*
The call in the controller is perfectly well cached,
the javascript call is not cached.
To be sure that the code was the same, I exchanged the name in the
controler call and viewer call
*
response.baapje = service_platdak()**
*
and the other one is used a csv file for the javascript DyGraph in
the viewer
*<script type="text/javascript">**
** graph2 = new Dygraph(**
** document.getElementById ( "pygraph2" ),**
** "../call/csv/service_platdak2",**
** {**
*
with exactly the same result:
The call in the controller is perfectly well cached,
the javascript call is not cached.
Any ideas ?
The complete code of the service:
#************************************************************
#************************************************************
try:
sys.test_platdak
except :
sys.test_platdak = 1
@cache('service_platdak', 300, cache.ram )
@service.csv
def service_platdak():
ToDay = date.today()
Tomorrow = ( ToDay + timedelta (1) )
Yesterday = ( ToDay - timedelta (1) )
# **********************************
# Get Solar Power current day
# **********************************
SQL = """
select Date, M2, M2_s1
from Compare_Model
where Date >= ?
and Date < ?
and M2_s1 > 0
order by Date
"""
Current = db.executesql ( SQL, ( ToDay, Tomorrow ) )
# **********************************
# Get total result of yesterday
# **********************************
SQL = """
select total(M2), total(M2_s1)
from Compare_Model
where Date >= ?
and Date < ?
and M2_s1 > 0
"""
Gisteren = db.executesql ( SQL, ( Yesterday, ToDay ) )
Sum = Molenhoek_2.WattPeak * float ( Gisteren[0][0] ) / 6000
SumM = Molenhoek_2.WattPeak * float ( Gisteren[0][1] ) / 6000
# **********************************
# build the result
# **********************************
Rows = []
Rows.append
('Date,Power[Watt],Energy[kWh],Model[Watt],Model[kWh]'.split(','))
# **********************************
# add previous day sum to first and second row
# **********************************
Row = [ 0, 0, Sum, 0, SumM ]
Row[0] = Current[0][0] - timedelta ( hours = 1 )
Row[1] = sys.test_platdak
sys.test_platdak += 1
Rows.append ( Row )
Row = copy ( Row )
Row[0] = Current[0][0]
Rows.append ( Row )
# **********************************
# add all measurements of today
# **********************************
Sum = 0
SumM = 0
for Row in Current :
Power = 0
PowerM = 0
if not Row[1] is None :
Power = Molenhoek_2.WattPeak * float ( Row[1] )
Sum += Power
if not Row[2] is None :
PowerM = Molenhoek_2.WattPeak * float ( Row[2] )
SumM += PowerM
New = [ Row[0], Power, Sum/6000, PowerM, SumM/6000 ]
Rows.append ( New )
return Rows
On 11-Jan-15 16:55, Leonel Câmara wrote:
There must be something else wrong with your code. This should
work. My test:
@cache('test', 600, cache.ram )
@service.csv
def test():
import sys
try:
sys.N_Schuurdak += 1
except :
sys.N_Schuurdak = 10
return {'N_Schuurdak': sys.N_Schuurdak}
As expected it returned 10 for 10 minutes and then 11.
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py
<http://github.com/web2py/web2py> (Source code)
- https://code.google.com/p/web2py/issues/list
<https://code.google.com/p/web2py/issues/list> (Report Issues)
---
You received this message because you are subscribed to the
Google Groups "web2py-users" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to web2py+unsubscr...@googlegroups.com
<mailto:web2py+unsubscr...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google
Groups "web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to web2py+unsubscr...@googlegroups.com
<mailto:web2py+unsubscr...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups "web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.