On Thursday, November 23, 2017 at 12:07:10 AM UTC-8, mweissen wrote:
>
> Thank you - but I think I should explain my question with an example. 
> Let's say this is my task in scheduler.py:
>
> def mytask():
>     res = mail.send(some arguments...)
>     if res:
>          db.emailprotocol.insert(senddata="%s tries before" % 
> number_of_tries)
>     else:
>          do_something_to_repeat_the_task()
>
> (1) If res==False, i.e. if mail.send is not successful: what can I do to 
> force another try, to repeat the send process? I have tried to let mytask 
> return False, but this did not work. The task becomes COMPLETED. Is there 
> any way to let the task FAIL programmatically? My idea was to raise an 
> exception.
>
>
Are you seeing that in scheduler_task, or in scheduler_run, or both?

But raising an exception should work.  Most of my "FAIL"s are from 
inadvertently raising an exception;  both scheduler_run and scheduler_task 
then show "FAIL".  (Had to refresh distant memories of inner joins in SQL 
to check that.)


 

> (2) If mail.send is successful, I want to register how many tries have 
> been before. And it should be done without a query to the database table.
>
>
Well, I'm not sure how you would do it, and I'm not sure why.  The stdout 
and the traceback are both in the database table, and it doesn't seem to me 
to be a particularly expensive query.

You can't pass in a session id, and then fill in a variable stored in the 
session object, because any session object a worker sees is gone when the 
worker is done.  Writing something to the filesystem may not be any cheaper 
than reading the row from scheduler_run.

/dps




/dps


2017-11-22 22:54 GMT+01:00 Dave S <[email protected] <javascript:>>:
>
>>
>>
>> On Wednesday, November 22, 2017 at 9:25:31 AM UTC-8, mweissen wrote:
>> ​aaa​
>>
>>> Two questions:
>>>
>>> ​(1) Under some conditions (email send not successfully) ​I want to 
>>> force an other try after some minutes. Would it be a good idea to raise an 
>>> Exception?
>>>
>>>
>> Who would be raising the exception?
>>
>>  
>>
>>> (2) Let's say scheduler_task.retry_failed is 5 and we are in the second 
>>> repetition. How can I get these number = 2? Is there any property of 
>>> scheduler like scheduler.number_of_try?
>>>
>>> ​Regards, Martin​
>>>
>>>
>> select retry_failed, times_run,  times_failed, last_run_time from 
>> scheduler_task where times_failed != 0 ;
>>
>> Status should be 'FAILED' on those, as well.
>>
>> And all those values are in the Row object returned by task_status.
>>
>> Footnote:  In the online book (as at web2py.com/books), the search 
>> function with the term "scheduler" finds -K option in the command line help 
>> list, but doesn't find the API discussion also in Chapter 4.  I did get 
>> there by searching for "queue_task".  I'm not familiar with the guts of the 
>> search function to know why this happens.
>>
>> /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 [email protected] <javascript:>.
>> 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