2017-02-17 2 views
0

私はファイルにプロキシを1行に1つ書き込むPythonのループを持っています。このファイルは、後でを使って行ごとにcurl -x $PROXY経由でbashスクリプトから使用されます。1つのプロセスから1行を書き出し、別の行から1行を使います

2つのスクリプトを同時に起動し、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 
+0

なぜこのcurl呼び出しをpythonスクリプト内で開始しないのですか?または、PythonのカールAPIを使用します。 – languitar

+0

@languitar 2つのプロセスを同時に開始したいのですが、私のコードをシーケンシャルのままにしておくことをお勧めします。 – giuscri

+0

FIFOは永続性を提供しません。リーダがない場合、FIFOブロックに書き込む。書き込みを始める前にあなたのPythonプログラムの中から読者を起動しますが、読者を別のプロセスとして立ち上げて、書き込みを開始する前に読者が終了するのを待ってください。 – Fred

答えて

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 

おそらくPythonスクリプトが死んだとき、bashスクリプトを終了するには、いくつかのロジックがあるはずです:

あなたが探しているかもしれないコードは次のようなものです。

関連する問題