Ahoj, narazil jsem na problém se zámkem. Mám aplikaci na web serveru, která ukládá příznak booolean Zaplaceno do MySQL databáze. Občas se ale stane, že potvrzení platby přijde najednou ve stejný čas ze dvou zdrojů. Chtěl jsem to vyřešit zámkem, což ale nepomůže.
Princip kódu: from threading import Lock lock = Lock() lock.acquire() try: mysql_cursor.execute("SELECT Zaplaceno FROM platby WHERE Id=%s", (1,)) if mysql_cursor.fetchall()[0]['Zaplaceno'] == 0: mysql_cursor.execute("UPDATE Zaplaceno=1 FROM platby WHERE Id=%s", (1,)) mysql_connection.commit() # dalsi zpracovani platby... finally: lock.release() Pokud je request spuštěn 2x ve stený čas provede se zpracování platby 2x. Přičemž ale SELECT je pod zámkem, takže by se neměl provést mezi SELECT a UPDATE druhého threadu. Netušíte, kde může být problém? Díky za odpovědi. Mirek _______________________________________________ Python mailing list python@py.cz http://www.py.cz/mailman/listinfo/python Visit: http://www.py.cz