我们有一个Shake构建系统,其中一些规则与Postgres数据库对话,作为持久的后台服务。我们如何使用Shake来确保服务在需要时启动,并在Shake完成后关闭?
特别是,如果没有规则使用它,我们就不想启动该服务;如果使用了它,我们就不希望它在运行过程中多次启动/停止。
答案 0 :(得分:1)
在Shake中实现此模式的一种方法是:
<div class="container">
<div class="row">
<div class="col-xs-12">ABC</div>
</div>
</div>
我们创建了一个名为rules = do
startService <- newCache $ \() -> do
... start the service here ...
runAfter $ ... shut down the service here ...
"*.txt" %> \out -> do
startService ()
... use the service here ...
的缓存项目。仅在需要时,使用startService
最多可以执行一次操作。但是,我们可以启动服务(甚至有可能先构建服务)。我们使用newCache
关闭该服务,该服务将在Shake完成其执行后运行。
为确保该服务在任何规则下均可用,我们首先致电runAfter
。
作为一项相关功能,如果您有一条规则,即您不想提供持久服务,而只是为了批量操作,请参见startService ()
函数。