长任务执行者。

longtask的Python项目详细描述


https://travis-ci.org/konradhalas/longtask.png

长任务跑步者很少有好的功能。

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

除非适用法律要求或书面同意,否则软件 根据许可证分发是按“原样”分发的, 无任何明示或默示的保证或条件。 有关管理权限的特定语言和 许可下的限制。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java岩石、布、剪刀程序,带文件输入   java迭代Hashmap中的值列表   数组不能正确循环   JavaHibernate:对于一个遥远的惰性依赖,有一个渴望的获取者吗?   交通阻塞下的java车辆路径选择   如何在java中创建布尔方法来检查添加到具有特定索引的arraylist的对象   java Tomcat配置文件/上下文xml似乎已经崩溃了。请确保它是可分析和有效的。有关详细信息,请参阅服务器日志   为什么坐标有时相等,有时不相等?   java libgdx CameraInputController过于敏感,平移开始得太早   将C++排序函数移植到java   java应该是十进制的   swing Java JFrame中的所有内容都不可见   java使用数组中除一个元素以外的所有元素   从子类运行构造函数的Java