Потратив несколько дней на эту проблему, я смог найти решение - нам нужен stunnel или любой другой эквивалент, создающий туннель SSL, redis-cli не поддерживает ssl или tls.
Чтобы получить доступ к данным из ElastiCache для узлов Redis, включенных с транзитным шифрованием, вы используете клиенты, которые работают с Secure Socket Layer (SSL). Однако Redis-Cli не поддерживает SSL или безопасность транспортного уровня (TLS). Чтобы обойти это, вы можете использовать команду stunnel для создания туннеля SSL для узлов redis. Затем вы используете redis-cli для подключения к туннелю для доступа к данным с зашифрованных узлов Redis.
blockquote>https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/in-transit-encryption.html
Я думаю, вы не понимаете, как общаться ...
http://docs.python.org/library/subprocess.html#subprocess.Popen.communicate
общаться отправляет строку другому процессу и затем ожидает ее закончить ... (Как вы сказали, ожидает EOF прослушивания stdout & amp; stderror)
Вместо этого вам следует сделать следующее:
proc.stdin.write('message')
# ...figure out how long or why you need to wait...
proc.stdin.write('message2')
(и если вам нужно получить stdout или stderr, вы бы использовали proc.stdout или proc.stderr)
У меня уже была такая проблема, и насколько я мог понять, вы не могли сделать это с помощью subprocess
(что, я согласен, очень контринтуитивно, если это правда). В итоге я использовал pexpect
(можно получить из PyPI).