【发布时间】:2015-10-13 00:42:29
【问题描述】:
我对线程安全与非线程安全操作的了解并不那么丰富,但我想知道我看到的问题是否是因为这个。
在我的模块目录中,我创建了一个定义了类的模块。
然后在 db.py 我有一个像这样的 _after_insert 触发器:
db.workorder._after_insert.append(lambda s,f: workorderAfterInsert(s,f))
在我的 _after_insert 触发器中,我正在从我的模块中实例化类,如下所示:
import workorder.sequencer as sequencer
workorderId = id
wo = db.workorder(workorderId)
sequencer = sequencer.Sequencer(workorder_id=workorderId, db=db)
sequencer.build_bom()
sequencer.sequence()
sequencer.save_sequenced_workorder()
db.commit()
我不知道如何描述它,但我看到在执行 sequencer.sequence() 时出现随机错误。在这一点上,我唯一的想法是存在线程安全或并发问题。
如果有人能告诉我这是否安全(或明智),我将不胜感激。任何意见将不胜感激。
-吉姆
【问题讨论】:
-
什么是
sequencer以及db的定义位置/方式?请显示更多相关代码。 -
如果你没有展示代码是如何交互的,真的无法判断。
-
@Anthony - Sequencer 只是我编写并存储在模块目录中的一个类。如果您认为相关,我可以在这里发布。
-
我刚刚发现:stackoverflow.com/questions/8309902/… 我认为我的问题可能是我将所有变量都作为“类”变量而不是实例变量(这是我认为我得到的)。我已经实施了更改,看看是否效果更好。