- 本书赞誉
- 前言
- 目标读者
- 不适合阅读本书的读者
- 本书结构
- 什么是数据处理
- 遇到困难怎么办
- 排版约定
- 使用代码示例
- 致谢
- 第 1 章 Python 简介
- 第 2 章 Python 基础
- 第 3 章 供机器读取的数据
- 第 4 章 处理 Excel 文件
- 第 5 章 处理 PDF 文件 以及用 Python 解决问题
- 第 6 章 数据获取与存储
- 第 7 章 数据清洗:研究、匹配与格式化
- 第 8 章 数据清洗:标准化和脚本化
- 第 9 章 数据探索和分析
- 第 10 章 展示数据
- 第 11 章 网页抓取:获取并存储网络数据
- 第 12 章 高级网页抓取:屏幕抓取器与爬虫
- 第 13 章 应用编程接口
- 第 14 章 自动化和规模化
- 第 15 章 结论
- 附录 A 编程语言对比
- 附录 B 初学者的 Python 学习资源
- 附录 C 学习命令行
- 附录 D 高级 Python 设置
- 附录 E Python 陷阱
- 附录 F IPython 指南
- 附录 G 使用亚马逊网络服务
- 关于作者
- 关于封面
14.2 自动化步骤
因为自动化从一个清晰简单的目标开始,所以自动化的步骤应该同样清晰和简单。文档化下面的问题对开始自动化特别有帮助(通过列表、白板、图纸或故事板)。
· 任务何时开始?
· 这个任务是否有时间限制或最大长度?如果有的话,什么时候结束?
· 对这个任务来说,有哪些必需的输入?
· 对这个任务来说,什么是成功或部分成功?
· 如果任务失败,应该发生什么 ?
· 任务产生或提供什么?面向谁?以何种方式?
· 在任务结束后应该发生什么(如果有的话)?
如果能够回答其中 5 个或更多的问题,你就可以开始自动化。如果不能,在你开始自动化之前,需要做更多的研究和说明。如果要自动化之前从来没有做过的事情,或者不是经常做的事情,在执行任务时尝试文档化它,然后确定你是否能够回答上述问题。如果你的项目太大或太模糊,尝试将它分解为小任务,并且自动化其中的几个。或许你的任务包括一个报告,需要下载两个数据集,进行清洗和分析,然后根据输出的不同,发送结果到不同的群组。你可以分解这项任务为一些子任务,自动化每一个步骤。如果其中任何一个子任务失败了,停止执行下面的任务,警报负责维护脚本的人员,这样可以研究它,并且在 bug 或问题解决后重新执行。
所以,自动化的基本步骤如下(注意,根据任务类型的不同,步骤会有变化)。
(1) 定义你的问题集合,将其分解为更小的工作块。
(2) 精确地描述每一个子任务的输入是什么、输入做什么以及需要什么来确认任务完成。
(3) 确定哪里可以得到输入,以及何时运行任务。
(4) 开始编码你的任务,用真实或样例数据测试。
(5) 整理你的任务和脚本,添加文档。
(6) 添加日志,聚焦于调试错误和记录成功的任务。
(7) 提交你的代码到仓库中,手动测试它。按照需要做出修改。
(8) 通过将手动任务替换为自动化任务,为自动化准备好脚本。
(9) 在任务开始自动化后,关注日志和警报。修正所有的错误和 bug。更新你的测试和文档。
(10) 为日志中的错误检查频率制订一个长期计划。
自动化的第一个步骤永远是更好地定义你的任务和子任务,让它们足够小,这样可以轻易地完成它们,且它们的失败或成功是确定的。
后面的几个步骤同我们在全书中使用的处理过程类似。你应该确定怎样开始用 Python 解决问题。搜索库或者工具,帮助你修复问题或完成请求,然后开始编码。一旦脚本开始工作,你会想要使用一些不同的可用数据集或输入测试它。在成功的测试之后,简化和文档化它。将其上传到一个远程仓库(Bitbucket 或 GitHub)中,这样随着时间的推移你可以记录修改和额外的信息。
一旦你完成了脚本,首先手动运行它(而不是通过自动化的方式)。当新的数据就位,或者到了运行它的时候,手动执行,持续观察程序的输出。可能会有隐藏的错误存在,也可能你需要添加额外的日志和调试信息。
根据满足需求的自动化类型,你可能创建了一个简单的定时任务,脚本按特定的时间间隔执行(本章后文会介绍关于定时任务的知识)。你可能需要稍微修改脚本,让它可以通过使用参数变量、数据库或者系统上特定的文件自主运行。当它运行时,你可能会添加它到任务队列来管理它。无论哪一种自动化合适,你的工作都还没有结束。
当你的脚本第一次自动化时,在它每次运行时花时间来检查它是很必要的。查看日志并监控进程。你可能会找到小 bug,然后修改它们。再一次更新所有必要的日志和文档。
在大约经过了 5 次成功或日志记录下来的失败后,你可以减少人工检查的次数。然而,在每月或者每季度使用 grep(http://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples/)查看日志,看一下发生了什么,仍然是一个很好的主意。如果你正在使用一个日志聚合器,你完全可以自动化这一步骤,并且让这一任务发送错误和警报报告。
自动化不是小进程,但是早早投入时间和精力是值得的。一个运行良好的自动化任务集合需要一些时间来完成,但是结果通常比那些需要从始至终关注、修改和监控的一次性脚本要好。密切关注并花一些时间正确地自动化你的脚本。之后才真正投入到手头接下来的工作当中,而不是一直将你的一部分工作与监控和管理难以驾驭的任务相关联。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论