Python 使用fabric运行并行任务
我想使用结构库通过SSH运行并行任务,我将脚本定义为(在Windows上运行): 但是当我运行脚本时,它会返回以下错误,任何人都能帮助我它有什么问题吗?非常感谢~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
[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__