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 (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 [email protected].
> 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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to