Написать одну строку из одного процесса и использовать одну строку из другого

У меня есть цикл из Python, который пишет прокси в файл, по одному на строку. Этот файл позже используется из скрипта bash через curl -x $PROXYпострочно используя cat proxies.txt,

Можно ли улучшить этот подход, запустив два сценария одновременно и используя именованный канал, который может использоваться cat только когда python пишет новую строку / новый прокси?

На мой взгляд, я бы написал что-то вроде

f = open('/tmp/proxies', 'w') # but this call is blocking!
for proxy in ...:
    f.write(proxy)

а также

for PROXY in $(cat /tmp/proxies); do curl -x $PROXY example.com; done

1 ответ

Много комментариев о блокировке FIFO; Я не буду повторять их, но главная проблема заключается в следующем: когда процесс не читает, процесс записи блокируется.

Код, который вы можете искать, выглядит примерно так:

#!/bin/bash
python the_python_script.py &  # start in the background
tail -f /tmp/proxies| while read px; do 
    curl -x $px example.com
done

Вероятно, должна быть какая-то логика для завершения сценария bash, когда сценарий python умирает.

Другие вопросы по тегам