def __setstate__(self, state):
# This code is run when an instance is created by unpickling, and not when it is initially created.
self.__dict__.update(state)
# roll back jobs that were sent into some state? make these transitions tolerant of being called twice in a row?
# how do jobs get purged that finished?
for jobId in self._status_by_jobId:
directory_status = self._get_module_directory_status(jobId)
if directory_status == self._status_by_jobId[jobId]:
continue
if directory_status in ['AboutToFail','AboutToAbort']:
# just try again
self._set_module_directory_status(jobId, jobId)
elif directory_status in ['Pass','Fail', jobId]:
pass
elif directory_status in ['AboutToPass']:
# move all the stuff back into the jobdir and try again
jobdir = self._jobDirectory_by_jobId[jobId]
moddir = self._moduleDirectory_by_jobId[jobId]
if not os.path.exists(jobdir):
os.mkdir(jobdir)
module_files = os.listdir(jobdir)
for fn in module_files:
if fn.startswith('pipette.'):
continue
old_path = os.path.join(moddir, fn)
new_path = os.path.join(jobdir, fn)
os.rename(old_path, new_path)
# _after_ the files are moved, update the status
self._set_module_directory_status(jobId, jobId)
else:
raise Exception('Module directory left in an unrepairable state: ' + \
self._moduleDirectory_by_jobId[jobId])
pipetteServer.py 文件源码
python
阅读 23
收藏 0
点赞 0
评论 0
评论列表
文章目录