I'm tracking this thread a bit slowly... Is the raw portion within the 
#include custom to your setup - or is this something that should be added 
to the Belchertown skin?

On Thursday, January 21, 2021 at 12:47:26 PM UTC-5 garrya...@gmail.com 
wrote:

> It looks like the workaround Rich suggested works.
>
> A couple of notes:
>
> 1. the generated filename must be in quotes (#include raw "generated file 
> name")
>     - the Cheetah generator will throw an error if not.
>
> 2. There must not be 'raw' arguments in index.html.tmpl
>     - I left them in after previous debugging
>     - if they are in, the Cheetah generator will not parse the generated 
> file and the Cheetah directive will 
>       be display in the output HTML.
>
> I will be putting a control in my extension to enable/disable this 
> workaround.
>
> Again, thanks to Rich and others for helping with this.
>
> Regards,
>
> Garry
>
> On Wednesday, January 20, 2021 at 10:16:26 AM UTC-8 garrya...@gmail.com 
> wrote:
>
>> Thanks to Vince, Rich and all who took the time to investigate this 
>> problem.
>>
>> Happy that it’s not WeeWX or Belchertown, two fine programs!
>>
>> I hope to release my WXFeeds service extension within the next few days.
>>
>> Regards,
>>
>> Garry
>>
>> On Wednesday, January 20, 2021 at 8:19:32 AM UTC-8 vince wrote:
>>
>>> Well FWIW, it's not Belchertown.    I took my minimalist demo-skin and 
>>> aded the one include line in it and boy does it grow.....
>>>
>>> Two tests with a restart that's obvious.
>>>
>>> On Wednesday, January 20, 2021 at 7:07:23 AM UTC-8 garrya...@gmail.com 
>>> wrote:
>>>
>>>> I haven’t made any changes yet but in thinking about your workaround, 
>>>> it will be interesting to see if Cheetah actuality processes the included 
>>>> include file or if it skips it because the outer include file’s attributes 
>>>> are static.
>>>>
>>>> If Cheetah doesn’t process the inner include file, it still should be a 
>>>> way to inject the ‘raw’ argument without having to edit ‘index.html.tmpl’. 
>>>>  That is, my code would generate both the outer and inner include files 
>>>> each cycle, with the outer include file containing the ‘raw’ argument as 
>>>> you suggest.
>>>>
>>>> Regards,
>>>>
>>>> Garry Lockyer
>>>> C: +1.250.689.0686 <(250)%20689-0686>
>>>> E: ga...@lockyer.ca
>>>>
>>>>
>>>> On Jan 20, 2021, at 06:24, bell...@gmail.com <bell...@gmail.com> wrote:
>>>>
>>>> Note, it is growing - just much slower.
>>>>
>>>>
>>>>
>>>> On Wednesday, 20 January 2021 at 09:13:35 UTC-5 bell...@gmail.com 
>>>> wrote:
>>>>
>>>>> Garry,
>>>>> I might have a workaround for you. Wrap your html file in a template. 
>>>>> something like this.
>>>>> index.html.tmp (this is in the belchertown skin)
>>>>> #include index_hook_after_charts.inc
>>>>>
>>>>> index_hook_after_charts.inc (this is the 'wrapper', naturally if you 
>>>>> 'owned' index.html.tmpl you would not need it)
>>>>> #include raw generated.html
>>>>>
>>>>> generated.html (the file you generate - name as you want)
>>>>> your html
>>>>>
>>>>> I ran this on my loop 10,000 times and saw no appreciable memory 
>>>>> increase and performed better too.
>>>>> rich
>>>>>
>>>>> On Tuesday, 19 January 2021 at 22:45:42 UTC-5 garrya...@gmail.com 
>>>>> wrote:
>>>>>
>>>>>> Many thanks to all for poking at this!
>>>>>>
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> Garry Lockyer
>>>>>> C: +1.250.689.0686 <(250)%20689-0686>
>>>>>> E: ga...@lockyer.ca
>>>>>>
>>>>>>
>>>>>> On Jan 19, 2021, at 19:38, vince <vince...@gmail.com> wrote:
>>>>>>
>>>>>> Just a followup - I took belchertown out of the picture and used my 
>>>>>> minimal demo-skin and added 'one line' that #include(d) a file generated 
>>>>>> by 
>>>>>> Garry's service, and it 'is' leaking memory albeit less quickly than the 
>>>>>> belchertown example.....
>>>>>>
>>>>>>
>>>>>> I'll let it run overnight and we'll see what it looks like after 12 
>>>>>> more hours running.   The VM is set to only 1GB RAM but I'm hoping if it 
>>>>>> runs out it'll just go into swap and stay up.    OS is debian 10 under 
>>>>>> Vagrant/VirtualBox with 4.3.0 installed using python3 and setup.py
>>>>>>
>>>>>> Some mem.sdb output (date/time, units, interval, mem_size, mem_rss, 
>>>>>> mem_share)...
>>>>>>
>>>>>> 1611109216 16 5 141.0625 71.734375 12.2734375
>>>>>> 1611109516 16 5 142.5625 75.65234375 12.3359375
>>>>>> 1611109816 16 5 144.0625 79.65625 12.3359375
>>>>>> 1611110116 16 5 145.5625 84.5234375 12.3359375
>>>>>> 1611110416 16 5 147.24609375 88.0859375 12.3359375
>>>>>> 1611110716 16 5 148.49609375 91.43359375 12.3359375
>>>>>> 1611111016 16 5 149.99609375 95.421875 12.3359375
>>>>>> 1611111316 16 5 151.49609375 100.3359375 12.3359375
>>>>>> 1611111616 16 5 152.99609375 103.8359375 12.3359375
>>>>>> 1611111916 16 5 154.49609375 107.51171875 12.3359375
>>>>>> 1611112216 16 5 155.99609375 111.5 12.3359375
>>>>>> 1611112516 16 5 157.24609375 116.0859375 12.3359375
>>>>>> 1611112816 16 5 158.74609375 119.5859375 12.3359375
>>>>>> 1611113116 16 5 160.24609375 123.24609375 12.3359375
>>>>>> 1611113416 16 5 161.74609375 127.234375 12.3359375
>>>>>> 1611113716 16 5 163.24609375 132.11328125 12.3359375
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Tuesday, January 19, 2021 at 5:21:31 PM UTC-8 bell...@gmail.com 
>>>>>> wrote:
>>>>>>
>>>>>>> Ok, my standalone testcase was wrong. I think I have a valid one 
>>>>>>> here, https://github.com/bellrichm/experiments
>>>>>>> It just calls Cheetah.Template.Template in a loop.  If the include 
>>>>>>> file modified attribute does not change, all seems stable. If it 
>>>>>>> changes, 
>>>>>>> memory usage seems to grow.
>>>>>>> rich
>>>>>>>
>>>>>>> On Tuesday, 19 January 2021 at 19:16:46 UTC-5 tke...@gmail.com 
>>>>>>> wrote:
>>>>>>>
>>>>>>>> I'm not quite following this discussion.
>>>>>>>>
>>>>>>>> With Cheetah, you can compile the template and save the results. I 
>>>>>>>> believe this is what monitors the changed status of #include files. 
>>>>>>>> But, 
>>>>>>>> that's not the way WeeWX uses templates. It compiles, evaluates, then 
>>>>>>>> throws the results away. 
>>>>>>>>
>>>>>>>> If you use the "raw" directive in an #include, then the file will 
>>>>>>>> not be parsed. So, how can any $ directives work?
>>>>>>>>
>>>>>>>> Or, does Belchertown work differently?
>>>>>>>>
>>>>>>>> -tk
>>>>>>>>
>>>>>>>> On Tue, Jan 19, 2021 at 3:55 PM bell...@gmail.com <
>>>>>>>> bell...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> I agree that something does not seem quite right with Cheetah’s 
>>>>>>>>> ‘monitoring’ of include files. I took a different approach.
>>>>>>>>> First, I wrote a simple WeeWX service that would perform the 
>>>>>>>>> ‘touch’ command against the large file and a simple template that 
>>>>>>>>> included 
>>>>>>>>> the large file. When the file modified attribute changed, I observed 
>>>>>>>>> the 
>>>>>>>>> memory growth, otherwise all was stable. Also, when the file was not 
>>>>>>>>> ‘touched’ the Cheetah processing was noticeably faster.
>>>>>>>>> Next I wrote a standalone program to run a loop that ran the touch 
>>>>>>>>> command and invoke Cheetah.  I ran it 3 times. Each time around loop 
>>>>>>>>> 90, 
>>>>>>>>> the memory growth stopped and the processing was fast as though 
>>>>>>>>> Cheetah was 
>>>>>>>>> using cached data. 
>>>>>>>>> I am back to running under WeeWX to see if it will level off like 
>>>>>>>>> it does standalone. I am also wading through the Cheetah  code and 
>>>>>>>>> documentation.  As of now, I thoroughly confused. 
>>>>>>>>> rich
>>>>>>>>>
>>>>>>>>> On Tuesday, 19 January 2021 at 15:55:38 UTC-5 garrya...@gmail.com 
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> I wasn't happy leaving this is as is so I did some more testing.
>>>>>>>>>>
>>>>>>>>>> I looked in /home/weewx/bin/user/belchertown.py for any mention 
>>>>>>>>>> of the 4 include files it uses to add content - nothing there.
>>>>>>>>>>
>>>>>>>>>> So, I looked in /home/weewx/skins/Belchertown/index.html.templ 
>>>>>>>>>> and found 4 lines that reference the include files - they are of the 
>>>>>>>>>> form:
>>>>>>>>>>
>>>>>>>>>>                 #if 
>>>>>>>>>> os.path.exists("index_hook_after_station_info.inc")
>>>>>>>>>>                 <!-- Start of index_hook_after_station_info row 
>>>>>>>>>> -->
>>>>>>>>>>                 <div class="row index-hook-after-station-info 
>>>>>>>>>> border-bottom">
>>>>>>>>>>                     #include "index_hook_after_station_info.inc"
>>>>>>>>>>                 </div>
>>>>>>>>>>                 <!-- End of index_hook_after_station_info row -->
>>>>>>>>>>                 #end if
>>>>>>>>>> That caused me to look up the Cheetah '#include'  directive:
>>>>>>>>>>
>>>>>>>>>> "7.6 #include
>>>>>>>>>>
>>>>>>>>>> Syntax:
>>>>>>>>>> #include [raw] FILENAME_EXPR #include [raw] source=STRING_EXPR 
>>>>>>>>>>
>>>>>>>>>> The #include directive is used to include text from outside the 
>>>>>>>>>> template definition. The text can come from an external file or from 
>>>>>>>>>> a $placeholder variable. When working with external files, Cheetah 
>>>>>>>>>> will 
>>>>>>>>>> monitor for changes to the included file and update as necessary.
>>>>>>>>>>
>>>>>>>>>> This example demonstrates its use with external files:
>>>>>>>>>> #include "includeFileName.txt" 
>>>>>>>>>> The content of "includeFileName.txt" will be parsed for Cheetah 
>>>>>>>>>> syntax.
>>>>>>>>>>
>>>>>>>>>> And this example demonstrates use with $placeholder variables:
>>>>>>>>>> #include source=$myParseText 
>>>>>>>>>> The value of $myParseText will be parsed for Cheetah syntax. This 
>>>>>>>>>> is not the same as simply placing the $placeholder tag 
>>>>>>>>>> ``$myParseText'' in 
>>>>>>>>>> the template definition. In the latter case, the value of 
>>>>>>>>>> $myParseText 
>>>>>>>>>> would not be parsed.
>>>>>>>>>>
>>>>>>>>>> By default, included text will be parsed for Cheetah tags. The 
>>>>>>>>>> argument ``raw'' can be used to suppress the parsing.
>>>>>>>>>>
>>>>>>>>>> #include raw "includeFileName.txt" #include raw 
>>>>>>>>>> source=$myParseText 
>>>>>>>>>>
>>>>>>>>>> Cheetah wraps each chunk of #include text inside a 
>>>>>>>>>> nested Template object. Each nested template has a copy of the main 
>>>>>>>>>> template's searchList. However, #set variables are visible across 
>>>>>>>>>> includes 
>>>>>>>>>> only if the defined using the #set global keyword.
>>>>>>>>>>
>>>>>>>>>> All directives must be balanced in the include file. That is, if 
>>>>>>>>>> you start a #for or #if block inside the include, you must end it in 
>>>>>>>>>> the 
>>>>>>>>>> same include. (This is unlike PHP, which allows unbalanced 
>>>>>>>>>> constructs in 
>>>>>>>>>> include files.)"
>>>>>>>>>>
>>>>>>>>>> I decided to insert the 'raw' argument into the 4 '#include' 
>>>>>>>>>> directives to see if anything changed.
>>>>>>>>>>
>>>>>>>>>> After about 1 hour. memory usage did not grow above about 65 MB!
>>>>>>>>>>
>>>>>>>>>> I just removed the 'raw' argument and restarted WeeWX.  After 
>>>>>>>>>> just a few minutes, memory usage is almost 300 MB and growing!
>>>>>>>>>>
>>>>>>>>>> As before, the station website is at: 
>>>>>>>>>> https://lockyer.ca/weather/OsoyoosLakeNorthEast and the mem 
>>>>>>>>>> graphs are at https://lockyer.ca/weather/OsoyoosLakeNorthEast/mem
>>>>>>>>>> .
>>>>>>>>>>
>>>>>>>>>> So, I think I have conclusively shown  that the problem is within 
>>>>>>>>>> Cheetah and is related to it parsing an include file.
>>>>>>>>>>
>>>>>>>>>> I'm going to re-insert the 'raw' arguments and carry on.
>>>>>>>>>>
>>>>>>>>>> Should I report this issue to the Cheetah folks or is there 
>>>>>>>>>> someone closer to the Cheetah developers that can better do that?
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>>
>>>>>>>>>> Garry
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Monday, January 18, 2021 at 9:27:42 AM UTC-8 
>>>>>>>>>> garrya...@gmail.com wrote:
>>>>>>>>>>
>>>>>>>>>>> Thanks!
>>>>>>>>>>>
>>>>>>>>>>> I think I've done all that I can to isolate the problem.
>>>>>>>>>>>
>>>>>>>>>>> I'm going to get back to finishing up development and add a cron 
>>>>>>>>>>> entry to restart WeeWX every 24 hours in the wee hours of the 
>>>>>>>>>>> morning.
>>>>>>>>>>>
>>>>>>>>>>> I will be re-deploying a Davis Pro 2 system very soon (within 
>>>>>>>>>>> the week) and then deploying another Davis Pro 2 system shortly 
>>>>>>>>>>> after 
>>>>>>>>>>> that.  And sometime after than, a couple of WeatherFlow Tempest 
>>>>>>>>>>> systems.
>>>>>>>>>>>
>>>>>>>>>>> I'll post everything on GitHub soonest.
>>>>>>>>>>>
>>>>>>>>>>> Regards,
>>>>>>>>>>>
>>>>>>>>>>> Garry
>>>>>>>>>>> PS: Re: Ubuntu Desktop on RPi, I've been using it for 
>>>>>>>>>>> development for the last few days and it has not crashed or hung, 
>>>>>>>>>>> so I 
>>>>>>>>>>> think I'm going to stay with it.  Only issue is wireless mouse lag 
>>>>>>>>>>> (Raspberry Pi OS had same/similar problem) and I've ordered a 
>>>>>>>>>>> Logitech 
>>>>>>>>>>> MK540 wireless keyboard/mouse combo to see if newer hardwaere works 
>>>>>>>>>>> better 
>>>>>>>>>>> (than my dated Microsoft mouse).
>>>>>>>>>>> On Sunday, January 17, 2021 at 5:40:15 PM UTC-8 vince wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Restarted with your add-on plus belchertown both enabled - the 
>>>>>>>>>>>> RSS is nominally growing at 4 MB per 5-minute archive period.
>>>>>>>>>>>>
>>>>>>>>>>>> 1610928917 139.53125 63.97265625 15.453125
>>>>>>>>>>>> 1610929217 143.02734375 70.41796875 15.4921875
>>>>>>>>>>>> 1610929517 144.46484375 74.43359375 15.4921875
>>>>>>>>>>>> 1610929817 145.96484375 78.48046875 15.55078125
>>>>>>>>>>>> 1610930117 147.46484375 82.65625 15.58203125
>>>>>>>>>>>> 1610930417 149.09375 86.69921875 15.58203125
>>>>>>>>>>>> 1610930717 150.34375 90.55078125 15.58203125
>>>>>>>>>>>> 1610931017 151.84375 94.203125 15.24609375
>>>>>>>>>>>>
>>>>>>>>>>>> -- 
>>>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>>>> Groups "weewx-user" group.
>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>>>> send an email to weewx-user+...@googlegroups.com.
>>>>>>>>>
>>>>>>>> To view this discussion on the web visit 
>>>>>>>>> https://groups.google.com/d/msgid/weewx-user/bfd80498-e70b-4a26-9f76-6a922439a1ben%40googlegroups.com
>>>>>>>>>  
>>>>>>>>> <https://groups.google.com/d/msgid/weewx-user/bfd80498-e70b-4a26-9f76-6a922439a1ben%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>> -- 
>>>>>> You received this message because you are subscribed to the Google 
>>>>>> Groups "weewx-user" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>> send an email to weewx-user+...@googlegroups.com.
>>>>>>
>>>>>> To view this discussion on the web visit 
>>>>>> https://groups.google.com/d/msgid/weewx-user/4916786b-3bb2-49a6-93b1-87a60a822dbdn%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/weewx-user/4916786b-3bb2-49a6-93b1-87a60a822dbdn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>> <Screen Shot 2021-01-19 at 7.33.46 PM.png>
>>>>>>
>>>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "weewx-user" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to weewx-user+...@googlegroups.com.
>>>>
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/weewx-user/71e3dde7-0174-42d2-908e-1d6ea27b42ban%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/weewx-user/71e3dde7-0174-42d2-908e-1d6ea27b42ban%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/9d1ce1c1-3017-43f2-b66f-13c5637748e6n%40googlegroups.com.

Reply via email to