我正在尝试在 Python 3 中创建一个构造,它可以让我轻松地在远程机器上执行一个函数。假设我已经有了一个 python tcp 服务器,它将运行它接收到的函数,在远程服务器上运行,我目前正在考虑使用像这样的装饰器
@execute_on(address, port)
这将创建执行它正在装饰的函数所需的必要上下文,然后将函数和上下文发送到远程机器上的 tcp 服务器,然后执行它。首先,这有点理智吗?如果没有,你能推荐一个更好的方法吗?我做了一些谷歌搜索,但没有找到任何满足这些需求的东西。
我已经为 tcp 服务器和客户端提供了一个快速而肮脏的实现,因此相当确定它会起作用。我可以得到一个字符串表示的函数(例如func)被传递给装饰器
import inspect
string = inspect.getsource(func)
然后可以将其发送到可以执行的服务器。问题是,如何获取函数执行所需的所有上下文信息?例如,如果 func 定义如下,
import MyModule
def func():
result = MyModule.my_func()
MyModule 需要可用于在全局上下文中运行或在远程服务器上运行本地上下文。在这种情况下,这是相对微不足道的,但根据何时以及如何使用 import 语句,它可能会变得更加复杂。在 Python 中是否有一种简单而优雅的方法来做到这一点?目前我想出的最好的方法是使用 ast 库提取所有导入语句,使用检查模块获取这些模块的字符串表示,然后在远程服务器上重建整个上下文。不是特别优雅,我可以看到很多错误的空间。
谢谢你的时间