如何将 lastpass Vault 对象传递给多处理流程工作者
How to pass a lastpass Vault object into multiprocessing process worker
我正在尝试 运行 多个进程,所有这些进程都使用我的 Lastpass 凭据中的信息。这个想法是获取 Vault 一次,然后使用一群 Worker 检索密码来完成他们的工作。
我得到金库 -
if __name__ == '__main__':
LPV=lp.get_vault()
我定义工人:
def workerDEV():
environment='DEV'
print "I am in ", environment
create_objects.main(client=client, LastPassVault=LPV)
def workerPRD():
environment='PRD'
print "I am in ", environment
create_objects.main(client=client, LastPassVault=LPV)
启动工人:
worker_1 = multiprocessing.Process(target=workerDEV)
worker_1.start()
worker_2 = multiprocessing.Process(target=workerPRD)
worker_2.start()
我收到错误:
NameError: global name 'LPV' is not defined
这是有道理的,因为根据我的研究,每个工作人员都会重新启动会话,从而失去受 if __name__ == '__main__':
保护的 LPV。
我查看了 multiprocessing.Value(typecode_or_type, *args, lock=True)
,但不知道如何使用它。它似乎适用于 String 和 Int 类型的对象,但不适用于 Vault。
谢谢,非常感谢您从这里提出的建议。
将此替换为您的工作函数以删除冗余并将 LPV 作为参数传递给您的工作函数。
from multiprocessing import Process
def workerFunc(num, LPV):
print "I am in ", num
create_objects.main(client=client, LastPassVault=LPV)
for i in range(2):
Process(target=workerFunc, args=(i, LPV)).start()
我正在尝试 运行 多个进程,所有这些进程都使用我的 Lastpass 凭据中的信息。这个想法是获取 Vault 一次,然后使用一群 Worker 检索密码来完成他们的工作。
我得到金库 -
if __name__ == '__main__':
LPV=lp.get_vault()
我定义工人:
def workerDEV():
environment='DEV'
print "I am in ", environment
create_objects.main(client=client, LastPassVault=LPV)
def workerPRD():
environment='PRD'
print "I am in ", environment
create_objects.main(client=client, LastPassVault=LPV)
启动工人:
worker_1 = multiprocessing.Process(target=workerDEV)
worker_1.start()
worker_2 = multiprocessing.Process(target=workerPRD)
worker_2.start()
我收到错误:
NameError: global name 'LPV' is not defined
这是有道理的,因为根据我的研究,每个工作人员都会重新启动会话,从而失去受 if __name__ == '__main__':
保护的 LPV。
我查看了 multiprocessing.Value(typecode_or_type, *args, lock=True)
,但不知道如何使用它。它似乎适用于 String 和 Int 类型的对象,但不适用于 Vault。
谢谢,非常感谢您从这里提出的建议。
将此替换为您的工作函数以删除冗余并将 LPV 作为参数传递给您的工作函数。
from multiprocessing import Process
def workerFunc(num, LPV):
print "I am in ", num
create_objects.main(client=client, LastPassVault=LPV)
for i in range(2):
Process(target=workerFunc, args=(i, LPV)).start()