我有一个数据库表,它描述了在分布式系统上处理的作业。因此,整个工作分成许多小部分,每个部分在自己的环境中的不同机器上处理。从多个进程更新SQLAlchemy字段线程安全
我想保留一个简单的日志,告诉每个进程如何生效,因此每个节点都使用SQLAlchemy连接到同一个作业表,并将其作业编号和状态附加到UnicodeText字段的末尾。
我希望看到这样的:
Part 1: complete<br/>
Part 2: complete<br/>
Part 3: error<br/>
Part 4: complete<br/>
...etc
我只是在每个节点上做了process.log += "Part 1: complete\n"
当它处理完的部分。然后一个session.commit()
我知道零件号码将失序,这对我的目的是好的,但发生了什么事情,而是我只获得总零件的几个条目。我认为这是因为许多作业正在同时完成,并且执行append + =不是线程安全的。
我对会议不太了解,所以我不知道所有的技巧来配置它。我曾尝试使用NullPool无效。
有没有什么办法可以在这样的分布式环境中使append操作线程安全?
有道理。感谢您的澄清。我知道类似的事情正在发生,但无法确定操作的确切顺序。在这种情况下,每个部分的记录对于我所需要的都是过度的,但总的来说,我认为你对使用数据库是有利的。我以某种方式解决了这个问题,但是我不记得那么久了。 :o – user1914881 2014-01-24 02:31:21