python-3.x - 从外部python脚本调用需要root权限的python函数(pynq库)不断崩溃
问题描述
我必须从 python 函数中获取连续数据,它的库之一(Overlay)取决于 root 权限。我必须使用 Flask 运行该 python 函数。
首先,我搜索了如何授予对 python 脚本的 root 访问权限,但不幸的是,我没有找到任何模仿我的案例的方法。
我采用的方法—— 1/ 包含Overlay库的
Python 文件假设名称是child.py,其中包含一个函数名status_data
from pynq import PL
from pynq import Overlay
def main_path():
ol = Overlay("/home/xilinx/pynq/overlays/design_4/design_1_wrapper.bit")
return ol
def status_data():
ol = main_path()
data = '''my_code'''
return data
2/ Flask 文件名是app.py,我需要通过端点获取连续数据
from create_json_data import status_data
from flask import Flask, render_template
from flask import jsonify
'''mayn others lib, doesn't include'''
'''my_code'''
@app.route("/auto_update_table")
def parse_auto_update_table(name=None):
data_json = status_data()
return jsonify(data_json)
3/ 两个文件都在同一个文件夹中。我已经运行了那个child.py并且sudo python3 child.py
它可以工作。执行 Flask 代码sudo python3 app.py
。我的猜测是随着app.py 的运行,sudo
它会使用具有 root 权限的所有其他依赖项。但我失败了。它执行,但过了一会儿它崩溃了。
是否有任何解决方法可以从app.py以 root 权限调用child.py文件的函数而不会崩溃?安全不是问题,因此我可以向任何脚本文件透露我的凭据,如果还需要,我可以手动输入密码,但只能手动输入一次,因为它是一个连续过程,因此一遍又一遍地输入密码并不是一个切实可行的解决方案。status_data
解决方案
我找到了解决方案。首先,我正在更改问题标题,因为在得到解决方案后,我理解当前标题不适合这种情况。尽管授予root 权限非常容易。sudo python3 app.py
做这项工作。主要缺陷在于
from pynq import Overlay
和
def main_path():
ol = Overlay("/home/xilinx/pynq/overlays/design_4/design_1_wrapper.bit")
return ol
我已经main_path
反复调用了这个函数,但是它需要大量的延迟并且它在那里不存在。所以我遇到了意外的崩溃。在声明
ol = Overlay("/home/xilinx/pynq/overlays/design_4/design_1_wrapper.bit")
我已经ol
作为全局变量传递给status_data
函数之后,它解决了这个问题。
推荐阅读
- r - 根据 r 中的两列选择重复项
- sql - postgres 查找同一列的数字之间的差异
- vbscript - 当路径中的句点被截断时如何获取基本名称?
- r - 如何在R中的数据框中找到2行值之间的百分比差异
- python - 基于关键比较两个数据帧
- c# - Winform 应用程序为名称为“程序”的数据库表引发错误
- google-drive-api - googleapi:错误 403:超出速率限制,rateLimitExceeded
- python - 使用python求和并追加2个文件的输入
- python - 如何在匹配列值上垂直合并数据框
- reactjs - 有人可以解释为什么我不应该直接更新 React `context` 中的值吗?