Re: [web2py] Re: scheduling multiple tasks

2016-11-11 Thread Vid Ogris
The runWoshiEngine is started on user request. I have to get another one
 working like every hour after the app was started.

Call it saveIdOut

in scheduler.py

from gluon.scheduler import Scheduler
def runWoshiEngine(scriptId, path):

# import os, sys
# import time
import subprocess
print "runWoshiEngine in progress.."
p = subprocess.Popen(['woshi_engine.exe', scriptId], shell=True,
stdout = subprocess.PIPE, cwd=path)
return dict(status = 1)



def saveIdOut(a,b):
print b
print "haha " + a
print ""
return dict(status = 1)

scheduler = Scheduler(db, tasks = dict(runWoshiEngine =
runWoshiEngine,saveIdOut=saveIdOut ) ,heartbeat = 1)



I put

task = scheduler.queue_task(saveIdOut, [1,2], start_time=now,  # datetime
  stop_time=None,  # datetime
  timeout = 60,  # seconds
  repeats=6)

in my main controler
And i always get failed in my scheduler table



2016-11-11 13:47 GMT+01:00 黄祥 :

> pls try : (you can improve it to another queue task by define another
> function in controller)
> *controllers/default.py*
> """
> for running scheduler
> python web2py.py --nogui --no-banner -K woshiweb -D 0
>
> 1 hour = 3600 seconds # for period
> 10 minutes = 600 seconds # for timeout
> """
>
> start_now = datetime.datetime.now()
> stop_time_now = (start_now + datetime.timedelta(days = 1) )
>
> def queue_task_0():
> scheduler.queue_task('runWoshiEngine', prevent_drift = True, start_time =
> start_now,
> next_run_time = start_now, stop_time = stop_time_now,
> repeats = 0, retry_failed = 1, period = 3600, timeout = 600
> )
> session.flash = T("Task 0 Queued")
> redirect(URL('index.html') )
>
> best regards,
> stifan
>
> --
> 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 a topic in the
> Google Groups "web2py-users" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/web2py/FK1ygjNNjDU/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Lep pozdrav

Vid Ogris

-- 
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.


[web2py] Re: scheduling multiple tasks

2016-11-11 Thread 黄祥
pls try : (you can improve it to another queue task by define another 
function in controller)
*controllers/default.py*
"""
for running scheduler
python web2py.py --nogui --no-banner -K woshiweb -D 0

1 hour = 3600 seconds # for period
10 minutes = 600 seconds # for timeout
"""

start_now = datetime.datetime.now()
stop_time_now = (start_now + datetime.timedelta(days = 1) )

def queue_task_0():
scheduler.queue_task('runWoshiEngine', prevent_drift = True, start_time = 
start_now, 
next_run_time = start_now, stop_time = stop_time_now,
repeats = 0, retry_failed = 1, period = 3600, timeout = 600
)
session.flash = T("Task 0 Queued")
redirect(URL('index.html') )

best regards,
stifan

-- 
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.


[web2py] Re: scheduling multiple tasks

2016-11-10 Thread Dave S


On Thursday, November 10, 2016 at 5:07:16 AM UTC-8, Yebach wrote:
>
> Hello
>
>
> In my web2py app i am using scheduler. So far I have one task scheduled 
> which runs a subprocess when called from controler (an external exe 
> file/application)
>
> Now i want to add another task which will do some background work
>
> My code in *scheduler.py* till now was
>
> def runWoshiEngine(scriptId, path):
>
>
> # import os, sys# import timeimport subprocessprint "runWoshiEngine in 
> progress.."
> p = subprocess.Popen(['woshi_engine.exe', scriptId], shell=True, stdout = 
> subprocess.PIPE, cwd=path)return dict(status = 1)
>
> from gluon.scheduler import Scheduler
> scheduler = Scheduler(db, heartbeat = 1)
>
>
> so this way the scheduler started on client's request
>
>
> after starting my app I run my scheduler with command
>
>
> python web2py.py -K myapp
>
>
> Now I want to add another function which will start every hour to do some 
> background work.
>
> What would you recommend and how to add it to scheduler because if i add 
> anything to my line of code my initial task --> exe app is not started
>
>
> thank you
>
>
> best regards
>


You're using the Popen because you're running something non-python, I take 
it.  And the  ".exe" suggests Windows environment.

I'm not sure why adding a line of code breaks your app start, but the 
recommended way of queuing the initial occurrence of a task that repeats 
periodically is to have a function in your controller file that has args 
(that makes it not be a URL target), and then use -S from the command line 
or from a startup file to invoke that function.

See 

for some sample code.  That's a PR that pending for the web2py book.

/dps

-- 
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.