Написать одну строку из одного процесса и использовать одну строку из другого
У меня есть цикл из 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 умирает.