yes... very similar... I guess that just deleting the JS part and creating
a new DB object within the plugin  (so that it has it own ttransaction)
will make the work...

thanks

On Thu, Jan 26, 2012 at 9:20 AM, Bruno Rocha <[email protected]> wrote:

> I dont know if it is related, but there is a Locking plugin
>
> http://web2py.com/plugins/default/locking
>
>
> On Thu, Jan 26, 2012 at 7:05 AM, Sebastian E. Ovide <
> [email protected]> wrote:
>
>> ok, I guess that the answer is no... (or I didn't formulate the question
>> correctly....)
>>
>>
>> On Thu, Jan 19, 2012 at 11:51 PM, sebastian <[email protected]>wrote:
>>
>>> Hi All,
>>>
>>> just thinking on how to implement a distributed locking system in web2py
>>> using a DB: one row per each lock, lock_name is unique, if the row doesn't
>>> exist, then it is locked, if the row exist already, then it cannot be lock
>>> as it is already locked !
>>>
>>> I'd like to create a module like this (that can be called from anywhere
>>> in web2py)
>>>
>>> def lock(lock name):
>>>    begin transaction
>>>    does the row exist ?
>>>      no => insert new row
>>>    commit transaction
>>>    return result
>>>
>>> def unlock(lock_name):
>>>    begin transaction
>>>    delete row where name = lock_name
>>>    commit transaction
>>>
>>>
>>> BUT.... not sure if this is possible (of course it is !) in web2py...
>>>
>>> consider this controller
>>>
>>> def hello1():
>>>    do a  lot of things
>>>    db.commit()
>>>    do more things in the DB
>>>
>>>    ### here is my doubt: #######################
>>>    if lock("some resource"): ###  I'm calling a method that opens and
>>> close a transaction inside a transaction !!!
>>>       do something
>>>       unlock("some resource")
>>>    else
>>>      do something else
>>>
>>>    #### another example ####################3
>>>    if lock("resource A"):
>>>      if lock("resource B"):
>>>         do a lot of things woth both resources
>>>         unlock("resource B")
>>>         unlock("resource A")
>>>      else
>>>        so other things
>>>        unlock("resource A")
>>>
>>>    do more things
>>>
>>>    db.commit()
>>>    do more staff
>>>
>>>
>>>  any better idea ?
>>>
>>> thansk
>>>
>>
>>
>>
>> --
>> Sebastian E. Ovide
>>
>>
>>
>>
>
>
> --
>
> Bruno Rocha
> [http://rochacbruno.com.br]
>
>


-- 
Sebastian E. Ovide

Reply via email to