Не работает очередь в Redis

есть 2 файла - мойщик и сушильщик. однако при вызове в командной строке

py redis_washer.py &

Сначала полностью выполняется первая программа, и только потом я могу вызвать вторую

а нужно,чтобы они работали вместе мойщик помыл одну тарелку, сушильщик ее сразу высушил.

у меня получается так

C:\Users\User>py redis_washer.py &
Washer is starting
Washed salad
Washed bread
Washed soup
Washed oil chicken
Washer is done

C:\Users\User>py redis_dryer.py
Dryer is working
Dried salad
Dried bread
Dried soup
Dried oil chicken
dishes are dried

проблему так и не нашел


Ответы (1 шт):

Автор решения: Roman Konoval

Проблема никак не связана с redis или python. Тут дело в том, как вы запускаете программу. Вы используете unix способ запуска программы в фоне. В Windows cmd & не работает и чтобы запустить программу в фоне нужно делать так:

START /B py redis_washer.py

Только учтите, что если программа выводит в консоль, то этот текст будет смешан с приглашением, вашим вводом и выводом программ, которые вы запускаете далее.

Т.е. когда после запуска получаем в консоли C:\Users\User>Washer is starting, то это потому, что:

  1. cmd запустил py redis_washer.py в фоновом режиме
  2. после этого cmd напечатал приглашение ввода новой команды C:\Users\User>
  3. после этого (точнее это происходит параллельно, но по скорости не yспевает), программа делает свое первый вывод в консоль. И он выводится после приглашениея.

Если в этот момент ввести новую команду и нажать ENTER, то она выполнится, параллельно с уже запущенной. А вывод этих двух программ будет перемешан в консоли.

Попробуйте создать в том же каталоге файл demo.bat с содержимым:

START /B py redis_washer.py
START /B py redis_dryer.py

И потом запустить его из командной строки:

demo.bat

Это запустит обе команды параллельно.

→ Ссылка