Я хочу использовать несколько компьютеров для запуска скрипта Python. Я бы хотел передать уникальные данные из mysql на каждый компьютер, на котором запущен скрипт. У меня есть полу-рабочее решение, но проблема в том, что когда два сценария запускают его одновременно, прежде чем любой из них сможет обновить столбец состояния до «обработки», он выберет те же данные.
Я пытался:
"SELECT * FROM table WHERE status IS NULL FOR UPDATE"
, но это, казалось, просто полностью блокировало мое второе соединение из базы данных, не позволяя ему извлекать данные ниже него для обработки.
Я также попробовал приведенный ниже код, который работает, но только если 2 сценария не пытаются получить доступ к БД одновременно.
vids = []
ids = []
c.execute('SELECT video_id,url FROM videos WHERE status IS NULL LIMIT 100;')
data = c.fetchall()
for row in data:
vids.append((row[1],row[0]))
ids.append(row[0])
c.executemany('UPDATE videos SET status="processing" WHERE video_id=%s;', ids)
db.commit()
Я бы хотел, чтобы каждый компьютер получал уникальныйнаборы данных для обработки. Сценарий 1 захватывает 1-100, сценарий 2 захватывает 101-200, сценарий 3 захватывает 201-300 и т. Д.
Спасибо за помощь! Хорошего дня!