Транзакции Redis не имеют возможности «отката» - как только вы вызовете p.execute()
, операции в нем будут выполнены. Вы можете отменить транзакцию в любое время до ее исполнения, позвонив по номеру p.discard()
.
Когда вы отменяете транзакцию, она не откатывается, потому что на самом деле никакие операции не выполнялись.
@application.route("/test/transactions/<int:trigger>")
def test_transactions(trigger):
try:
logging.info('test transactions triggered')
r = redis.Redis(connection_pool=POOL)
p = r.pipeline(transaction=True)
p.hmset('multitest', {'thefield':'thevalue'})
if trigger==1:
p.discard()
return "discarded"
else:
p.hmset('multitest2', {'a':'b'})
retval = p.execute()
logging.info(retval)
return "keys created"
except Exception as e:
logging.error(e)
Примечание: я не получаю ваш код полностью - вы можете проверить trigger
перед чем-либо и пропустить попытку транзакции.
Можно использовать/nowarn опцию отключить предупреждения.
См. MSDN:/nowarn (Подавляют Указанные Предупреждения) (Параметры компилятора C#).