我有一个由 poolboy 工人产生的功能
基本概述:
- Phoenix Controller 用数据调用 Dispatcher
- Dispatcher 将数据传递给 Poolboy 工作人员
- Poolboy 工作人员使用给定数据生成一个新进程以进行处理
- 新进程使用数据调用系统命令(本例中为 wget)
我遇到的问题是,当我运行 ExUnit 测试时,它一直到生成的进程都很好,我可以输出数据(使用 IO.inspect)。
当我运行 System.cmd("wget".... 时,我在 ExUnit 测试运行时在终端中看到 wget 输出,因此该命令实际上正在运行,但是在该命令之后我所做的任何事情都没有运行。
所以在我的工人中,如果我这样做:
IO.puts "hello"
System.cmd("wget", opts)
IO.puts "world"
然后我看到hello
我看到了 wget 的输出,但我没有看到world
如果我做其他事情,例如:
IO.puts "hello"
File.write("/tmp/temp.txt", "test")
IO.puts "world"
然后我看到两者hello
,world
并且写入了一个文件。
是否有一些关于System.cmd
我遗漏的具体内容导致这种情况?当它不在单独的进程中运行时,它工作正常,因此它是进程和 System.cmd 的组合。
有任何想法吗?谢谢!