more on the matter.... this is the result of 600 queued tasks all in the 
main group, with two different schedulers started with -K appname, with 
postgresql

select assigned_worker_name, status, count(*) as howmany
from scheduler_task
group by assigned_worker_name, status

"monster#4772";"COMPLETED";285
"monster#4751";"COMPLETED";315

allright, they are not 300 and 300, but the more tasks they process the 
more the "percentage gap" will reduce, eventually being a close 50%-50%

On Friday, April 5, 2013 9:58:50 PM UTC+2, Niphlod wrote:
>
> I get that if you "manually" force them to pick tasks from different 
> groups they are processed, but different schedulers with the same group 
> name should receive the same amount of tasks anyway.
>
> On Friday, April 5, 2013 9:17:23 PM UTC+2, Yoel Benitez Fonseca wrote:
>>
>> El 5.4.2013 2:57 pm, Niphlod escribió: 
>> > this is the second time the issue is posted and yet I can't find a way 
>> > to 
>> > reproduce it.... It's true that I'm running two scheduler processes on 
>> > the 
>> > same machine vs one scheduler on on machine and the other on another 
>> > separate one, but as far as the "assign" algorithm is concerned, as 
>> > long as 
>> > there are two scheduler_workers rows, nothing should change. 
>> > Just as a proof, can you confirm that when you start two schedulers on 
>> > the 
>> > same server you observe the same behaviour ? 
>>
>> somehow I solved it: 
>>
>> On each server the worker is started with a different group name and 
>> each task is assigned to a group name randomly chosen from those 
>> reported in the database: 
>>
>> with n server start the workers like this: 
>>
>> server1: python /home/www-data/web2py/web2py.py -K myapp  # group name 
>> main 
>> server2: python /home/www-data/web2py/web2py.py -K myapp:srv2 
>> server3: python /home/www-data/web2py/web2py.py -K myapp:srv3 
>> ... 
>> serverN: python /home/www-data/web2py/web2py.py -K myapp:srvN 
>>
>>
>> for a group name at random from the available: 
>>
>> def get_groups_names(): 
>>      rows = db(db.scheduler_worker.id > 
>> 0).select(db.scheduler_worker.group_names).as_list() 
>>      mylist = [] 
>>      for row in rows: mylist.extend(row['group_names']) 
>>      tmp = set(mylist) #make it a set 
>>
>>      return [item for item in tmp] 
>>
>> and to assign a task to a group: 
>>
>> ... 
>> scheduler.queue_task(some_task, 
>>    ..., 
>>    group_name=random.choice(get_groups_names()) 
>> ) 
>> ... 
>>
>> After doing that, the WORKERS started working without problems and 
>> tasks are not waiting if there are WORKERS idle. 
>>
>> > On Friday, April 5, 2013 8:47:58 PM UTC+2, Yoel Benitez Fonseca wrote: 
>> >> 
>> >> El 5.4.2013 6:47 am, Niphlod escribió: 
>> >>> what db are you using ? 
>> >> 
>> >> postgres, is the same database shared between servers 
>> >> 
>> >>> 
>> >>> On Friday, April 5, 2013 6:24:13 AM UTC+2, Yoel Benitez Fonseca 
>> >>> wrote: 
>> >>>> 
>> >>>> i have this setup: 
>> >>>> 
>> >>>> 2 severs with the same web2py & app installed, each of then run a 
>> >>>> scheluder worker 
>> >>>> 
>> >>>> the problem is that only one of then get jobs, and in 
>> >>>> db.scheluder_worker the one with do all the work is the only with 
>> >>>> true 
>> >>>> in is_ticker field, i just the 2 of em cooperate and pickup the 
>> >>>> available jobs. 
>> >>>> 
>> >>>> P.D: got them in diferent's groups and randomly assing task to the 
>> >>>> groups. 
>> >>>> 
>> >>>> -- 
>> >>>> Yoel Benítez Fonseca 
>> >>>> Tel: 573400 
>> >>>> 
>> >> 
>> >> -- 
>> >> Yoel Benítez Fonseca 
>> >> Tel: 573400 
>> >> 
>>
>> -- 
>> Yoel Benítez Fonseca 
>> Tel: 573400 
>>
>

-- 

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