【问题标题】:web2py - is this thread-safeweb2py - 这是线程安全的吗
【发布时间】: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/… 我认为我的问题可能是我将所有变量都作为“类”变量而不是实例变量(这是我认为我得到的)。我已经实施了更改,看看是否效果更好。

标签: python web2py


【解决方案1】:

我的问题是我将变量定义为类变量而不是实例变量。改变了它,现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    相关资源
    最近更新 更多