使用Traceback(最近一次调用最后一次)Python SQL执行随机失败:

时间:2017-08-24 19:18:24

标签: python

我在循环中执行一些sqls。大多数代码工作正常并完成循环。但是有些时候python在2-3小时后因Traceback问题而失败。当我在DB中检查SQL执行时,它执行了但是python没有继续下一个执行循环并且卡住了。 2小时后抛出错误

执行SQL

sql = f.read() 
cursor.execute(sql)

错误:

Traceback (most recent call last):
...
...
  File "/home/lib/python2.7/site-packages/pgdb.py", line 480, in __exit__
    self.rollback()
  File "/home/lib/python2.7/site-packages/pgdb.py", line 519, in rollback
    raise _op_error("can't rollback")
pg.OperationalError: can't rollback

以下是循环中的完整代码:

dt = new_execution_timestamp_for(job, dependencies, cursor)

if dt is not None:


logging.info("Running job %s", job)
with open(os.path.join(os.environ['ROOT'],
                       "share", job + ".sql")) as f:
    sql = f.read()
    if weekly is None or weekly == date.today().weekday():
        if loops is not None:
            loop_items = fetch_list("loops", loops, cursor)
            timestamp = fetch_job_timestamp(job, cursor)
            for item in loop_items:
                cursor.execute(sql, {loops: item, 
                                     'last_executed': timestamp})
        else:
            cursor.execute(sql)
    cursor.execute(UPDATE_TIMESTAMP, (dt, job))
else:

logging.info("Skipping job %s", job)

0 个答案:

没有答案