I want to send emails using a background queue as described in the web2py book: http://web2py.com/books/default/chapter/29/8#Sending-messages-using-a-background-task
However, the queue only sends emails that have been in the database when I start the script. Database entries added lateron don't get picked up by the script. The only way I can achieve that is to add another db.commit() before the select(). I am sure this is not supposed to be necessary. Does anyone know why this is happening? import time while True: db.commit() # Only works if I add this line rows = db(db.queue.status=='pending').select() for row in rows: if mail.send(to=row.email, subject=row.subject, message=row.message): row.update_record(status='sent') else: row.update_record(status='failed') db.commit() time.sleep(60) # check every minute --