长任务执行者。
longtask的Python项目详细描述
长任务跑步者很少有好的功能。
longtask是一个简单的框架,用于在控制台环境中运行长任务(如数据迁移、数据处理)。 在流程执行期间,您可以在进度条上跟踪更改。如果出了什么事或者你现在没有时间-你 可以停止任务并稍后重新运行。longtask收集所有任务统计信息并将其存储在json文件中。
如何创建任务?
如果要创建任务,则需要从longtask.Task实现派生类。你还需要覆盖一些 事情:
- name-任务名称,
- get_items()-此方法应返回项集合,
- process_item(item)-在此方法中,您可以处理您的项目。
简单示例-调整许多图片的大小(resize.py):
import longtask import glob from PIL import Image class ResizeTask(longtask.Task): name = 'resize' def get_items(self): return glob.glob('*.png') def process_item(self, item): original_image = Image.open(item) resized_image = original_image.resize((100, 100)) resized_image.save('output/' + item) if __name__ == '__main__': ResizeTask().run()
现在在带有*.pngimages的目录中,您可以运行:
$ python resize.py [*] Starting task: resize [2013-03-03 18:36:29.953306] [*] Processed: 100% (1000/1000) errors: 10% (100/1000) |###################| Elapsed Time: 1:00:00 ETA: 0:00:00 [*] Finished task: resize [2013-03-03 18:36:30.080421] [*] Stats: - processed: 100% (1000/1000) - success: 90% (900/1000) - errors: 10% (100/1000) - 100 x IOError with traceback: Traceback (most recent call last): File "/Users/konradhalas/dev/workspace/personal/longtask/longtask/task.py", line 59, in run self.process_item(item) File "resize.py", line 13, in process_item original_image = Image.open(item) File "/Users/konradhalas/dev/virtualenvs/longtask/lib/python2.7/site-packages/PIL/Image.py", line 1980, in open raise IOError("cannot identify image file") IOError: cannot identify image file
在我们的示例中,我们调整了1000个文件的大小—其中100个文件的数据已损坏(IOError)。这项任务花了1小时。
您始终可以使用Ctrl+C停止任务,然后使用标记-c重新运行它。如果在执行过程中发生错误 您可以使用标志-e重新运行它(它仅适用于标志-c)。
许可证
版权所有【2013】【Konrad Ha_as】
根据apache许可证2.0版(以下简称“许可证”)授权; 除非符合许可证,否则您不能使用此文件。 您可以在
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则软件 根据许可证分发是按“原样”分发的, 无任何明示或默示的保证或条件。 有关管理权限的特定语言和 许可下的限制。