Я нашел специальное решение, в котором я мог бы просто обернуть оба мешка в слой блокировки.
Под этим подразумевается, что мы добавляем простую задачу в начале, которая блокирует определенную строку в базе данных, а затем в конце тега, мы также добавляем простую задачу, которая разблокирует заблокированную строку.
Поэтому, когда в настоящее время выполняется один из двух пакетов, а другой хочет начать работу, он просто блокируется, поскольку не может заблокировать конкретную строку, известную для обоих пакетов.
Ниже приведено простое описание фиксирующего слоя
dag1: оператор блокировки, задача 1, оператор блокировки.
dag2: оператор блокировки, задача 1, оператор блокировки.
Конечно, мы можем позволить завершить работу lock_operator, если он не может заблокировать строку, и установить значение retries_count очень высоким, поэтому мы гарантируем, что оно все еще будет пытаться заблокировать, пока не сможет.