這裏有一個小衆場景,並且要直接測試,你需要wkhtmltopdf(在這種情況下監聽端口7000 w/--read-args-from-stdin)並作爲守護進程運行(以及一個方便的html文件手)爲什麼subprocess.call()沒有按預期運行命令?
如果我這樣做:
echo "-s letter -T 24mm -R 24mm -B 0mm -g ~/my.html /tmp/my.pdf" | nc localhost 7000
然後很迅速,突然迸出/tmp/my.pdf ......我可以連續做25次,獲得儘可能多的結果,如果我分別旋轉wkhtmltopdf上下25次。
Walp,這意味着我需要能夠從我們自己的隊列進食守護進程中調用THIS,此外,我必須等待它完成,然後才能檢查結果的存在和相應的成功或失敗的滴答聲。
我發現subprocess.call,但它不工作的原因不明......以機智,從Python提示:
call(['echo', '\"-s letter -T 24mm -R 24mm -B 0mm -g ~/my.html /tmp/my1.pdf\"', '|', 'nc', 'localhost', '7000'])
我得到:
"-s letter -T 24mm -R 24mm -B 0mm -g ~my.html /tmp/my1.pdf" | nc localhost 7000
0
0表明它認爲它是成功的......但是,與我在bash本身發佈相同聲明時不同,wkhtmltopdf守護進程沒有任何內容。由於打印輸出不包含它,我試圖在其中粘貼額外的「回聲」,但結果相同。
所以...不知道怎麼做,這並沒有像直接輸入到bash提示符那樣引入事物。
想法?專業知識?
謝謝!
管道是由一個shell處理的,默認情況下'subprocess.call'不使用。使用'subprocess.call('command | stuff',shell = True)'。 – Blender
ooooooh;非常感謝你 –