套接字读取问题

套接字读取问题

我有一个火花流程序,它从我使用以下方法创建的套接字中读取数据:

nc -lk 9999

该程序从套接字读取数据并排除“错误”消息。当我在套接字中手动写入时,它工作正常。
我创建了一个 python 脚本,它经常打印“错误”消息。我将使用以下方法将结果保存在文件中:

stdbuf -oL python my_script.py &>> my_file.txt

并从套接字读取文件:

nc -lk 9999 | tail -f my_file.txt

一切正常,文件在后台更新时,套接字将从文件读取数据,但问题是我的 spark 程序没有捕获“错误”消息。
总结:当我在套接字中手动写入“错误”消息时,spark 会捕获它们,但它不会捕获 python 脚本从套接字生成的“错误”消息。
实际上,如果我从套接字读取文件而不是在其中输入,程序将无法运行。
有什么区别?

答案1

您输入的命令

nc -lk 9999 | tail -f my_file.txt

意思是:获取 的输出netcat并将其通过管道传输到tail -f my_file.txt。但tail不接受任何输入,它只是监视文件my_file.txt。尝试

tail -f my_file.txt | nc -lk 9999

而是,这样 的输出tail就被馈送到nc

相关内容