【问题标题】:Django Transaction ErrorsDjango 事务错误
【发布时间】:2010-09-03 12:56:46
【问题描述】:

我有一个 cronjob 来处理电子邮件并将它们存储在系统中。它已经运行了一年多,但现在突然间它开始时不时地随机给出这些奇怪的交易错误。

2010-09-02-01:45:11 ERROR Exception occured during mail processing
Traceback (most recent call last):
 File "/var/www/example.com/project/scripts/cronjobs.py", line 453, in process_msg
   source, email, 'i' if rejection_reason else 'v', rejection_reason)
 File "/usr/lib/python2.5/site-packages/django/db/transaction.py", line 267, in _commit_manually
   leave_transaction_management()
 File "/usr/lib/python2.5/site-packages/django/db/transaction.py", line 77, in leave_transaction_management
   raise TransactionManagementError("Transaction managed block ended with pending COMMIT/ROLLBACK")
TransactionManagementError: Transaction managed block ended with pending COMMIT/ROLLBACK

它没有任何理由发生,我没有任何其他上下文信息可用。这是我的 process_msg 函数的结构:

@commit_manually
def save_email( u,l, d, t, s, e, status, reason):
    try:
        # ... bla bla bla ... 
        commit()
    exception, e:
        rollback()
        raise e

def process_msg(m):
    try:
        #....
        save_email(u, l, d, t
            source, email, 'i' if rejection_reason else 'v', rejection_reason)
        #....
     except Exception, e:
        logger.error('Error while processing email', exc_info=True )
        return None
    else:
        return True

我如何调查这个问题?

【问题讨论】:

    标签: django transactions


    【解决方案1】:

    似乎在输入save_email() 之前发生了错误。如果 process_msg() 中没有 commit()rollback() 指令,则会引发 TransactionError。

    您可以尝试用调试器圈出错误:

    def process_msg(m):
        try:
            import pdb                    # import python debugger
            pdb.set_trace()               # begin debugging
            #....
            save_email(u, l, d, t,
            […]
    

    您可以在Python website 上找到有关如何使用调试器的信息。

    【讨论】:

    • 不能使用调试器。它是一个触发它并且错误随机出现的 cronjob
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    相关资源
    最近更新 更多