Well the functions to terminate will still have be manually initiated by an 
operator clicking a button.
And no workflow type of suspending / resuming a long running task is needed.
And no workflow designer and no workflow Activity classes such as State 
Activities needed.

Managers just need to know the tasks can be terminated anytime.

Meanwhile I am installing my Scheduler app on the corporate server tonight 
and the Manager will be pleased will what it does so far.

Thanks.

On Monday, March 11, 2013 4:58:38 PM UTC-5, Niphlod wrote:
>
> ok, seems more a goal of a workflow engine than a task queue, but I'll see 
> what can be done.
>
> On Monday, March 11, 2013 10:54:10 PM UTC+1, dlypka wrote:
>>
>> a supervsior may decide to kill a task started by one of his team members.
>>
>> On Mon, Mar 11, 2013 at 4:50 PM, Niphlod <nip...@gmail.com> wrote:
>>
>>> "business condition" like ????
>>> it seems a poor design to have a task, than watch it and if it "hangs 
>>> for some reason" kill it abruptly not based on "task started a while ago"
>>>
>>> PS: are you on windows ? signal management on win poses a lot of 
>>> limitations.
>>>
>>>
>>> On Monday, March 11, 2013 10:27:17 PM UTC+1, dlypka wrote:
>>>>
>>>> timeout does not handle the case where it is discovered that the task 
>>>> needs to be stopped ASAP due to a business condition.
>>>> For example the remote server may have limited connections available so 
>>>> if a task runs into trouble, the process needs
>>>> to be killed ASAP to release the precious remote connection.  That is 
>>>> the case in my application.
>>>>
>>>> Even with a while loop, there will have to be a way get the win32 
>>>> process id of the python task for a given worker so the right one
>>>> can be killed.
>>>>
>>>> Looks like a better solution is for the task to have its own manager 
>>>> thread that can listen for kill requests.
>>>> i.e. the scheduler tasks need to be written using a standard piece of 
>>>> scaffolding code to provide fine-grained task management.
>>>>
>>>> On Monday, March 11, 2013 3:27:35 PM UTC-5, Niphlod wrote:
>>>>>
>>>>> having a single worker for each task can be daunting (well, you could 
>>>>> wrap web2py.py -K appname in a never-ending loop so it's restarted as 
>>>>> soon 
>>>>> as it gets killed)....
>>>>> #!/bin/sh
>>>>> while true
>>>>>     do web2py/web2py.py -K yourapp
>>>>>     echo 'killed, restarting in a bit'
>>>>>     sleep 2
>>>>> done
>>>>>
>>>>> but I'm curious about your use-case. Why do you need to terminate a 
>>>>> RUNNING task (that can't be accomplished using the timeout parameter)?
>>>>>
>>>>>
>>>>> On Monday, March 11, 2013 9:18:48 PM UTC+1, dlypka wrote:
>>>>>>
>>>>>> Thanks for the quick reply.
>>>>>> I suppose a workaround is to have a separate worker for each task.
>>>>>> The I can TERMINATE the worker.
>>>>>>
>>>>>> A suggestion: can you suggest some standard python scaffolding to 
>>>>>> include in each
>>>>>> task function to make it listen for a kill signal / message?
>>>>>>
>>>>>> On Monday, March 11, 2013 3:05:21 PM UTC-5, Niphlod wrote:
>>>>>>>
>>>>>>> once the task is inserted you should not change it's values unless 
>>>>>>> its in the QUEUED status (technically the ASSIGNED works too, but it's 
>>>>>>> NOT 
>>>>>>> recommended).
>>>>>>> there's no way for the scheduler to terminate a specific task once 
>>>>>>> the task is started, unless you KILL the worker (setting the worker to 
>>>>>>> TERMINATE will kill the worker as soon as the RUNNING task is finished).
>>>>>>> PS: if you need to execute a task n times, use the repeat argument. 
>>>>>>> using time.sleep(something) in a task has the side-effect of NOT 
>>>>>>> returning 
>>>>>>> to the main loop to execute potentially new QUEUED tasks (every 
>>>>>>> scheduler 
>>>>>>> process is allowed to process a single task at a time).
>>>>>>> if you need to limit the time the task runs, use the timeout 
>>>>>>> parameter.
>>>>>>>
>>>>>>> If something is not clear please ask.
>>>>>>>
>>>>>>> On Monday, March 11, 2013 8:04:52 PM UTC+1, dlypka wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> I need a way to terminate a specific Scheduled Task while it is 
>>>>>>>> RUNNING.
>>>>>>>> I tried using Admin Database Admin to update the 
>>>>>>>> scheduler_task.stop_time to a time close to now while it was running.
>>>>>>>> But the task continued for several more minutes and COMPLETED its 
>>>>>>>> normal 5 minute run.
>>>>>>>> The task calls time.sleep(300) to make it run for 5 minutes.
>>>>>>>>
>>>>>>>> I guess the Scheduler is not looking at the db values every 3 
>>>>>>>> seconds.
>>>>>>>> Is it just checking the in memory task object properties?
>>>>>>>>
>>>>>>>> Is there a way to update the in memory object properties of a task 
>>>>>>>> while it is running?
>>>>>>>>
>>>>>>>> Thanks.
>>>>>>>>
>>>>>>>  -- 
>>>  
>>> --- 
>>> 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/7-ZOS_In8IU/unsubscribe?hl=en.
>>> To unsubscribe from this group and all its topics, send an email to 
>>> web2py+un...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>  
>>>  
>>>
>>
>>

-- 

--- 
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/groups/opt_out.


Reply via email to