У меня есть таблица InnoDB, которая содержит список файлов, которые необходимо обработать.Как я могу обеспечить безопасность ниндзя-потока
Сценарий питона, который обрабатывает обработка в основном делает это:
- получить следующий файл, который имеет статус = «необработанным»
- установить статус на «обработку»
- вызова некоторые C++ сценарий для процесса что файл
- пометить его как «обработаны»
- конец
Этот скрипт python будет вызываться несколько раз, и поэтому я несколько обеспокоен тем, что на шагах 1 и 2 может возникнуть некоторая проблема, когда процесс B будет получать одну и ту же строку из db как процесс A, прежде чем процесс A будет иметь время обновите статус на шаге 2.
Я предполагаю, что Python GIL не помогает мне здесь, так как интерпретатор выпустит GIL при выполнении SQL (правильно?). И из того, что я читаю, делать блокировки таблиц на InnoDB не работает. Будет ли блокировка на уровне строк позаботиться о проблеме здесь? Если нет, то каковы мои другие варианты?
Могу ли я просто сделать "из потоковая импорта Замка" и добавить
with lock:
update_file_status(file_id, "processing")
?
спасибо, я попробую это решение! – badideas