[web2py] Action commit and scheduled task commit racing?

2016-11-27 Thread Niphlod
It absolutely can't happen.
But the logic in the code is quite prone to inconveniences: every time a task 
runs, it only processes the last record of the table...what happens if you have 
called the webhook function several times before the task has the chance to be 
executed? You end up having holes of processed webhooks

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


[web2py] Action commit and scheduled task commit racing?

2016-11-27 Thread Niphlod
It absolutely can't happen.
But the logic in the code is quite prone to inconveniences: every time a task 
runs, it only processes the last record of the table...what happens if you have 
called the webhook function several times before the task has the chance to be 
executed? You end up having holes of processed webhooks

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


[web2py] Action commit and scheduled task commit racing?

2016-11-27 Thread Niphlod
It absolutely can't happen.
But the logic in the code is quite prone to inconveniences: every time a task 
runs, it only processes the last record of the table...what happens if you have 
called the webhook function several times before the task has the chance to be 
executed? You end up having holes of processed webhooks

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


[web2py] Action commit and scheduled task commit racing?

2016-11-25 Thread Albert Rothman


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.