繁体   English   中英

如何将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

这是有道理的,因为根据我的研究,每个工作人员都重新开始会话,从而失去了LPV, if __name__ == '__main__':if __name__ == '__main__':保护, 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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM