长任务执行者。

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如何在Spring应用程序中使用nonjtadatasource将select查询重定向到复制数据库   java为什么不能返回通用映射?   java ParseDate不可解析   jar查找所需的最小java类路径   在Android中从XML动态创建小部件时java强制关闭   java电子邮件ID、主题和消息未在安卓 Send Intent中设置   indexoutofboundsexception java。lang.StringOutOfBoundsException无法理解它   客户端java。木卫一。EOFEException(关闭流时出现问题)   spring boot如何在thymeleaf的java列表中添加值   java添加PDFStamper覆盖会导致XFA预填充字段消失   java在尝试生成签名包时,我遇到了以下错误   java使用JOOQ读取标记对象的推荐方法是什么?   小程序还原到旧java策略   java基于两个键删除地图列表中的重复项   java solr排除用于索引的文件   java为什么`jLabel1=jLabel2`不更改显示的值?   hibernate Java代码将使用JPA的过程结果存储在CSV文件中,并将其保存在FTP路径中,而不将其存储在本地计算机中   java如何将所有jar文件放在一个jar文件中?