支持zodb的后台线程支持
cipher.background的Python项目详细描述
用于创建可以与zodb对话并使用 本地站点组件。
我们可能在重新发明芹菜。
示例
假设我们有一个带有简单发布工作流的dms。我们 有“草稿”和“发布”两种状态。这个例子中的问题 从“草稿”到“发布”的转换需要几分钟时间, 我们不希望用户等待。
首先,我们创建一个WorkflowTransition后台线程:
classMyWorkflowTransition(BackgroundWorkerThread):execute=Truedescription="background worker thread (%(class_name)s) for %(site_name)s User %(user_name)s"def__init__(self,site_db,site_oid,site_name,user_name,daemon=True,object_oid=None):self.object_oid=object_oidsuper(MyWorker,self).__init__(site_db,site_oid,site_name,user_name,daemon=True)defscheduleNextWork(self):returnself.executedefgetObjectFromOID(self):conn=getSite()._p_jarreturnconn.get(self.object_oid)defdoWork(self):sleep(15)# This is our long TASKself.execute=Falsedocument=self.getObjectFromOID()document.wf_status="PUBLISHED"
我们有一个带有初始工作流状态草稿的简单文档。
classDocument(Persistent):wf_state="DRAFT"
现在我们必须调用WorkflowTransition。
defsetWorkflow(site,document_oid,user_name):worker=MyWorkflowTransition(site_db=site._p_jar.db(),site_oid=site._p_oid,site_name=site.__name__,user_name=user_name,object_oid=document_oid,)worker.start()
当调用worker.start()时,线程进入“background”,用户 不用等到转换完成。
变化
1.0.2(2012-07-31)
- 重构backgroundworkerThread以从getsite()返回站点
1.0.1(2012-04-05)
1.0.0(2012-02-10)
- 作为一个单独的包首次发布。