Python 使用fabric运行并行任务

Python 使用fabric运行并行任务,python,Python,我想使用结构库通过SSH运行并行任务,我将脚本定义为(在Windows上运行): 但是当我运行脚本时,它会返回以下错误,任何人都能帮助我它有什么问题吗?非常感谢~ [builder@10.0.1.88:22] Executing task 'update_setting_remote' [builder@10.0.1.80:22] Executing task 'update_setting_remote' [builder@10.0.1.57:22] Executing task 'upd

我想使用结构库通过SSH运行并行任务,我将脚本定义为(在Windows上运行):

但是当我运行脚本时,它会返回以下错误,任何人都能帮助我它有什么问题吗?非常感谢~

[builder@10.0.1.88:22] Executing task 'update_setting_remote' 
[builder@10.0.1.80:22] Executing task 'update_setting_remote' 
[builder@10.0.1.57:22] Executing task 'update_setting_remote' 
[builder@10.0.1.58:22] Executing task 'update_setting_remote' 
[builder@10.0.1.59:22] Executing task 'update_setting_remote' 
Traceback (most recent call last): 
File "C:\Python27\lib\site-packages\fabric\main.py", line 745, in main 
 *args, **kwargs 
File "C:\Python27\lib\site-packages\fabric\tasks.py", line 412, in execute 
 ran_jobs = jobs.run() 
File "C:\Python27\lib\site-packages\fabric\job_queue.py", line 137, in run 
 _advance_the_queue() 
File "C:\Python27\lib\site-packages\fabric\job_queue.py", line 122, in _advance_the_queue 
 job.start() 
File "C:\Python27\lib\multiprocessing\process.py", line 130, in start 
 self._popen = Popen(self) 
File "C:\Python27\lib\multiprocessing\forking.py", line 277, in __init__ 
 dump(process_obj, to_child, HIGHEST_PROTOCOL) 
File "C:\Python27\lib\multiprocessing\forking.py", line 199, in dump 
 ForkingPickler(file, protocol).dump(obj) 
File "C:\Python27\lib\pickle.py", line 224, in dump 
 self.save(obj) 
File "C:\Python27\lib\pickle.py", line 331, in save 
 self.save_reduce(obj=obj, *rv) 
File "C:\Python27\lib\pickle.py", line 419, in save_reduce 
 save(state) 
File "C:\Python27\lib\pickle.py", line 286, in save 
 f(self, obj) # Call unbound method with explicit self 
File "C:\Python27\lib\pickle.py", line 649, in save_dict 
 self._batch_setitems(obj.iteritems()) 
File "C:\Python27\lib\pickle.py", line 681, in _batch_setitems 
 save(v) 
File "C:\Python27\lib\pickle.py", line 286, in save 
 f(self, obj) # Call unbound method with explicit self 
File "C:\Python27\lib\pickle.py", line 748, in save_global 
 (obj, module, name)) 
pickle.PicklingError: Can't pickle <function inner at 0x01FDD1F0>: it's not found as fabric.tasks.inner 
Traceback (most recent call last): 
File "<string>", line 1, in <module>
File "C:\Python27\lib\multiprocessing\forking.py", line 380, in main 
 prepare(preparation_data) 
File "C:\Python27\lib\multiprocessing\forking.py", line 488, in prepare 
 assert main_name not in sys.modules, main_name 
AssertionError: __main__ 
[builder@10.0.1.88:22]执行任务“更新设置远程”
[builder@10.0.1.80:22]执行任务“更新设置远程”
[builder@10.0.1.57:22]执行任务“更新设置远程”
[builder@10.0.1.58:22]执行任务“更新设置远程”
[builder@10.0.1.59:22]执行任务“更新设置远程”
回溯(最近一次呼叫最后一次):
文件“C:\Python27\lib\site packages\fabric\main.py”,第745行,在main中
*args,**kwargs
文件“C:\Python27\lib\site packages\fabric\tasks.py”,第412行,在execute中
run_jobs=jobs.run()
文件“C:\Python27\lib\site packages\fabric\job\u queue.py”,第137行,正在运行
_推进队列()
文件“C:\Python27\lib\site packages\fabric\job\u queue.py”,第122行,在\u-advance\u队列中
job.start()
文件“C:\Python27\lib\multiprocessing\process.py”,第130行,在开始处
self.\u popen=popen(self)
文件“C:\Python27\lib\multiprocessing\forking.py”,第277行,在\uuuu init\uuuu
转储(进程对象、到子进程、最高\u协议)
文件“C:\Python27\lib\multiprocessing\forking.py”,第199行,在转储中
ForkingPickler(文件、协议).dump(obj)
文件“C:\Python27\lib\pickle.py”,第224行,位于转储文件中
自我保存(obj)
文件“C:\Python27\lib\pickle.py”,第331行,保存
自我保存(obj=obj,*rv)
文件“C:\Python27\lib\pickle.py”,第419行,在save\u reduce中
保存(状态)
文件“C:\Python27\lib\pickle.py”,第286行,保存
f(self,obj)#用显式self调用未绑定方法
保存目录中第649行的文件“C:\Python27\lib\pickle.py”
self.\u batch\u setitems(obj.iteritems())
文件“C:\Python27\lib\pickle.py”,第681行,在批处理设置项中
保存(v)
文件“C:\Python27\lib\pickle.py”,第286行,保存
f(self,obj)#用显式self调用未绑定方法
文件“C:\Python27\lib\pickle.py”,第748行,在save\u global中
(对象、模块、名称))
pickle.PicklingError:无法pickle:找不到它作为fabric.tasks.inner
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Python27\lib\multiprocessing\forking.py”,第380行,在main中
准备(准备数据)
文件“C:\Python27\lib\multiprocessing\forking.py”,第488行,在prepare中
断言主\u名称不在sys.modules中,主\u名称
断言错误:主

是否使用
python
fab
运行脚本。如果您使用的是python,那么您可能需要一个
如果uuuu name_uuuu='\uuuuu main_uuu'
:要运行test_任务(),我将其作为fab-f test.py test_任务运行,如果我删除了@parallel,它可以串行成功运行。我在python 2.7.10+Win7下运行脚本,这是否意味着Pickle不能在windows下运行?您的示例似乎没有包含
update\u setting\u remote
,但没有引用
test\u task
您是否使用
python
fab
运行脚本。如果您使用的是python,那么您可能需要一个
如果uuuu name_uuuu='\uuuuu main_uuu'
:要运行test_任务(),我将其作为fab-f test.py test_任务运行,如果我删除了@parallel,它可以串行成功运行。我在python 2.7.10+Win7下运行脚本,这是否意味着Pickle不能在windows下运行?您的示例似乎没有包含
更新设置\u远程
,但没有引用
测试任务
[builder@10.0.1.88:22] Executing task 'update_setting_remote' 
[builder@10.0.1.80:22] Executing task 'update_setting_remote' 
[builder@10.0.1.57:22] Executing task 'update_setting_remote' 
[builder@10.0.1.58:22] Executing task 'update_setting_remote' 
[builder@10.0.1.59:22] Executing task 'update_setting_remote' 
Traceback (most recent call last): 
File "C:\Python27\lib\site-packages\fabric\main.py", line 745, in main 
 *args, **kwargs 
File "C:\Python27\lib\site-packages\fabric\tasks.py", line 412, in execute 
 ran_jobs = jobs.run() 
File "C:\Python27\lib\site-packages\fabric\job_queue.py", line 137, in run 
 _advance_the_queue() 
File "C:\Python27\lib\site-packages\fabric\job_queue.py", line 122, in _advance_the_queue 
 job.start() 
File "C:\Python27\lib\multiprocessing\process.py", line 130, in start 
 self._popen = Popen(self) 
File "C:\Python27\lib\multiprocessing\forking.py", line 277, in __init__ 
 dump(process_obj, to_child, HIGHEST_PROTOCOL) 
File "C:\Python27\lib\multiprocessing\forking.py", line 199, in dump 
 ForkingPickler(file, protocol).dump(obj) 
File "C:\Python27\lib\pickle.py", line 224, in dump 
 self.save(obj) 
File "C:\Python27\lib\pickle.py", line 331, in save 
 self.save_reduce(obj=obj, *rv) 
File "C:\Python27\lib\pickle.py", line 419, in save_reduce 
 save(state) 
File "C:\Python27\lib\pickle.py", line 286, in save 
 f(self, obj) # Call unbound method with explicit self 
File "C:\Python27\lib\pickle.py", line 649, in save_dict 
 self._batch_setitems(obj.iteritems()) 
File "C:\Python27\lib\pickle.py", line 681, in _batch_setitems 
 save(v) 
File "C:\Python27\lib\pickle.py", line 286, in save 
 f(self, obj) # Call unbound method with explicit self 
File "C:\Python27\lib\pickle.py", line 748, in save_global 
 (obj, module, name)) 
pickle.PicklingError: Can't pickle <function inner at 0x01FDD1F0>: it's not found as fabric.tasks.inner 
Traceback (most recent call last): 
File "<string>", line 1, in <module>
File "C:\Python27\lib\multiprocessing\forking.py", line 380, in main 
 prepare(preparation_data) 
File "C:\Python27\lib\multiprocessing\forking.py", line 488, in prepare 
 assert main_name not in sys.modules, main_name 
AssertionError: __main__