<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Condición De Carrera on Karpoke - Just Another Blog</title><link>http://karpoke.ignaciocano.com/tags/condici%C3%B3n-de-carrera/</link><description>Recent content in Condición De Carrera on Karpoke - Just Another Blog</description><generator>Hugo -- 0.159.0</generator><language>es</language><lastBuildDate>Fri, 05 Nov 2010 18:11:00 +0100</lastBuildDate><atom:link href="http://karpoke.ignaciocano.com/tags/condici%C3%B3n-de-carrera/index.xml" rel="self" type="application/rss+xml"/><item><title>Control de concurrencia optimista en Django</title><link>http://karpoke.ignaciocano.com/2010/11/05/control-de-concurrencia-optimista-en-django/</link><pubDate>Fri, 05 Nov 2010 18:11:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2010/11/05/control-de-concurrencia-optimista-en-django/</guid><description>&lt;p&gt;Si tenemos una aplicación multiusuario, podría darse el caso de que dos
usuarios accediesen simultáneamente al mismo registro para editarlo. Si
no controlamos este evento, sucederá que el primero que guarde, que no
tiene porqué ser el primero que comenzó a editar, perderá los cambios, y
lo que es peor, sin enterarse.&lt;/p&gt;
&lt;p&gt;Una solución sería utilizar &lt;a href="http://docs.djangoproject.com/en/dev/topics/db/transactions/"&gt;transacciones&lt;/a&gt; [1], pero éstas deberían
abarcar varias peticiones HTTP, desde que se empieza a editar hasta que
se guarda satisfactoriamente (o no), con lo que la solución idónea se
complica. Una solución más sencilla, pero efectiva en la inmensa mayoría
de casos, es utilizar el &lt;a href="http://stackoverflow.com/questions/320096/django-how-can-i-protect-against-concurrent-modification-of-data-base-entries"&gt;control de concurrencia optimista&lt;/a&gt; (también
comentado en &lt;a href="http://hardware.slashdot.org/comments.pl?sid=1381511&amp;amp;cid=29536367"&gt;slashdot&lt;/a&gt;).&lt;/p&gt;</description></item></channel></rss>