See http://stackoverflow.com/a/40776846/440323.

On Friday, November 25, 2016 at 11:11:41 PM UTC-5, Albert Rothman wrote:
>
> My code has roughly the following form, and I am wondering if this can 
> generate a race condition or if the first insert happens right away:
>
> def receive_webhook():
>   def POST(*args, **vars):
>     db.webhook_table.insert(webhook_data=data, status=0)
>     scheduler.queue_task(process_update)
>     #....some other code happens after this
>
> The code in my Scheduler.py:
>
>  def process_update():
>         import json
>         record = db(db.webhook_table.status == 0).select(limitby=(0, 1), 
> orderby=~db.webhook_table.create_date).as_list()
>         # CAN THIS SELECT FINISH BEFORE THE INSERT FROM receive_webhook IS 
> RECORDED IN THE DB OR IS THE INSERT FINISHED IMMEDIATEDLY
>         state = json.loads(record[0]['webhook_data'])['status']
>         if not state == 'Updated':
>             db(db.webhook_table.id == record[0]['id']).update(status=2)
>         db.commit()
>     from gluon.scheduler import Scheduler
>     scheduler = Scheduler(db)
>
> Can this create a race condition? If so what is the best way to fix it so 
> that it can't?
> The status update(status=2) from the second code block appears to be 
> executing sometimes but not all the time.
>

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

Reply via email to