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.

Reply via email to