我遇到了一個情況,我正在處理一段代碼,其中我對遠程對象發出了更改(這是我無法複製到在克隆上工作),然後向遠程對象請求新狀態下的某些操作,並通過一系列相反的命令恢復我對它所做的所有更改。 問題是,如果在所有這些更改中遇到錯誤,我希望能夠回滾到目前爲止所做的所有更改。在沒有極端標識的情況下在python中維護代碼的可回滾流程
是來到我腦海中最適合的解決方案是Python的try-最後的工作流程,但它是相當成問題時,命令序列長:
try:
# perform action
try:
# perform action
try:
# ...
finally:
# unroll
finally:
# unroll
finally:
# unroll
這樣,更命令我需要更深我的縮進和嵌套變得越來越少,我的代碼可讀性越差。 我曾考慮過其他一些解決方案,例如維護一個堆棧,其中對於每個命令我推送一個回滾操作,但這可能會變得相當複雜,而且我不喜歡將綁定方法推入堆棧。 我也考慮過增加一個計數器來執行我所執行的每個動作,然後在一個單獨的計算機上根據計數器決定是否需要回滾,但同樣,這種代碼的可維護性會變得很痛苦。
我搜索「交易」和「回滾」時遇到的大多數匹配都與數據庫相關,並且不適合更通用的代碼... 任何人都有一個好主意,以便如何系統性地變平這個暴行?
你爲什麼不喜歡堆棧方法?看起來像一個完美的方式來做到這一點。 – carlpett