类似xargs的守护进程接受来自任意进程的输入

xargsd的Python项目详细描述


类似于xargs,但是接受来自任意进程的参数,并且只要有可用的参数就立即执行。

也就是说,当它接收到参数ab时,将执行foobar a b。如果参数cf在执行foobar a b时到达,那么foobar c d e f将在第一次调用完成时运行。

示例

  • 一个玩具示例,演示了非常基本的功能:

    $ python -m xargsd --socket-file temp.sock -vvv -- echo&[1]14917
    $ submit(){ python -m xargsd.client --socket-file temp.sock -- "$@";}
    $ submit a
    INFO:root:executing ['echo', 'a']
    a
    $ submit b c d
    INFO:root:executing ['echo', 'b', 'c', 'd']
    b c d
    

    (请注意,INFO:行和以下行是由xargsd打印的,而不是由客户端打印的。)

  • 一个稍微不那么有趣的例子,它演示了前一个命令执行时如何对命令进行批处理:

    $ echo'date; sleep "$@"' > date-and-sleep.sh
    $ python -m xargsd --socket-file temp.sock -vvv -- bash date-and-sleep.sh &[4]15714
    $ submit(){echo"submitting $@"; python -m xargsd.client --socket-file temp.sock -- "$@";}
    $ submit 1; sleep 0.1; submit 0.99; sleep 0.1; submit 1.01; sleep 3
    submitting 1
    INFO:root:executing ['bash', 'date-and-sleep.sh', '1']
    Sun May 1209:53:13 PDT 2019
    submitting 0.99
    submitting 1.01
    DEBUG:root:finished executing ['bash', 'date-and-sleep.sh', '1']: status 0
    INFO:root:executing ['bash', 'date-and-sleep.sh', '0.99', '1.01']
    Sun May 1209:53:14 PDT 2019
    DEBUG:root:finished executing ['bash', 'date-and-sleep.sh', '0.99', '1.01']: status 0
  • 一个非常严肃的例子,每当文件(其名称与某些模式匹配)更改时,使用watchman运行xargsd.client

    $ watchman watch .
    $ watchman -- trigger . pytest -p '.*\.py$' -X -p '(^|.*/)\.' -- bash -c 'python -m xargsd.client --socket-file .xargsd-pytest.sock -- .'
    $ python -m xargsd --unique --socket-file .xargsd-pytest.sock -vvv -- pytest --color=yes
    

    然后保存一个.py文件并观察守护进程的执行pytest .

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaCenter是JavaFX2中不可执行的窗格   java Docker将容器连接到本地数据库   java无法通过Spring从Redis获得正确的值   java为什么要将数组转换为列表再转换为数组   Java泛型在方法中放入字符串或整数参数   在Cloud Bigtable SDK中找不到java类   java Mavensiteplugin无法加载生成的源(Jaxb)   java GWT序列化和Appengine通道Api   PrintWriter out=new PrintWriter(sWriter)和PrintWriter out=response之间的java差异。getWriter()   空手道DSL中的javascript,在java参数调用中传递变量时如何转义单引号   windows 64位java可以与32位tomcat一起使用   为for循环| Java输入参数   java您可以更改SWT选项卡项的背景和/或前景颜色吗?   用java生成6位pin码   java如何从另一个通量中排除通量中的所有元素   java无法调用“javafx.scene.control.ComboBox.getItems()”,因为“Controller.getMyBox()”的返回值为null   将Java字符串与数组匹配时出现问题   java如何使用HttpsUrlConnection对SSL连接使用代理身份验证?   java如何检查XML元素是否包含CDATA?