考虑以下情况:
def sudo_get_data(): # needs root permissions
return some_python_objects() # not plain text output
def user_notify(data): # must be called as user
if condition(data):
desktop_notification(data)
while True: # the two functions are called periodically
data = sudo_get_data()
user_notify(data)
sleep(interval)
我猜我不可避免地需要拆分代码并在单独的进程中调用sudo_get_data
函数。
然而,我不能简单地将数据作为子进程的文本输出,因为数据是专门为我的目的而构造为Python对象的。
我可能会腌制和取消它,但是这些功能将每隔几秒被无限期地调用,所以这不是一个很好的解决方案,不断进行sudo调用:如果sudoers设置是这样的,那么每个用户都被提示调用
到目前为止,我正在考虑在代码的两个部分之间创建进程间通信。用户使用自己的权限运行主脚本,这个主脚本sudo-在子进程中运行一个单独的python脚本,然后每隔几秒就将python数据传回主脚本。
这样做是否有意义?
有没有更好的方法?