원격 객체에서 변경 사항을 명령하는 코드 조각을 작업하는 상황이 발생했습니다 (복제 할 수없는 부분이 있습니다). 복제를 통해 작업), 원격 객체에 새로운 상태의 일부 조작을 요청하고 반대 명령의 순서로 작성한 모든 변경 사항을 되돌립니다. 문제는 이러한 모든 변경 사항의 중간에 오류가 발생하면 지금까지 작성한 모든 변경 사항을 롤백 할 수 있기를 바랍니다.극단적 인 식별자없이 파이썬에서 롤백 가능한 코드 흐름 유지하기
내 마음에 와서 가장 좋은 피팅 솔루션은 시도 - 마지막으로 파이썬입니다 워크 플로우하지만, 명령의 순서가 긴 경우 오히려 문제가있다 :
try:
# perform action
try:
# perform action
try:
# ...
finally:
# unroll
finally:
# unroll
finally:
# unroll
이 방법은, 더 많은 명령은 내가 깊은 필요 내 들여 쓰기 및 중첩이 진행되고 내 코드가 읽기 어려워집니다. 나는 모든 명령에 대해 롤백 작업을 푸시하는 스택 유지와 같은 몇 가지 다른 솔루션을 고려해 왔지만, 다소 복잡해질 수 있으며 바인딩 된 메서드를 스택으로 푸시하는 것을 싫어합니다. 나는 하나의 작업에서 내가 수행 한 모든 작업에 대해 카운터를 증가시키는 것을 고려했다. 카운터에 따라 원하는 롤백 종류를 결정하지만, 다시 말해 그러한 코드의 유지 관리가 어려워진다.
"트랜잭션"과 "롤백"에 대한 검색 결과가 DB와 관련되어 있으며 일반적인 유형의 코드에 잘 맞지 않습니다. 누구나 체계적으로 평면화하는 방법에 대해 좋은 생각이 있습니다. 이 극악?
왜 스택 방법을 좋아합니까? 그것을하는 완벽한 방법처럼 보입니다. – carlpett