def controller_layer(doc): doc['ctr'] = 1 yield doc doc['ctr'] = 2 return doc def service_layer(doc): doc['srv'] = 1 yield doc doc['srv'] = 2 return doc def data_layer(doc): doc['data'] = 1 yield doc doc['data'] = 2 return doc x = {} for doc in controller_layer(x): for doc in service_layer(x): for doc in data_layer(x): print('save', doc) print('done', x)