【发布时间】:2013-10-26 03:16:09
【问题描述】:
这里有一个小众场景,要直接测试,你需要 wkhtmltopdf(在这种情况下监听端口 7000 w/--read-args-from-stdin)作为守护进程运行(和一个方便的 html手头上的文件。)
如果我这样做:
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 守护进程没有任何结果。我尝试在其中添加一个额外的“echo”,因为打印输出不包含它,但结果相同。
所以......不知何故,这与直接在 bash 提示符中键入时所做的方式不同。
想法?专业知识?
谢谢!
【问题讨论】:
-
管道由 shell 处理,
subprocess.call默认不使用。使用subprocess.call('command | stuff', shell=True)。 -
噢噢噢;非常感谢
标签: python bash subprocess echo wkhtmltopdf