- 本书赞誉
- 前言
- 目标读者
- 不适合阅读本书的读者
- 本书结构
- 什么是数据处理
- 遇到困难怎么办
- 排版约定
- 使用代码示例
- 致谢
- 第 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.3 什么会出错
在你的自动化程序中,有很多事情可能会出问题。其中一些非常容易更正和解释,然而其他问题更加模糊,可能根本不会有一个真正的修正。自动化中的重要一课是搞清楚哪些类型的错误和问题值得花时间和精力修复,哪些问题最好使用另外的方式解决。
以在第 12 章讨论过的错误类型为例:网络爬取中的网络错误。如果碰到了重大网络错误,你只有几个好的选择。你可以改变运行任务的机器,看是否会有性能提升(这可能会带来经济和时间上的花销,取决于你的设置)。你可以找到网络提供商,寻求支持。你可以在不同的时间运行任务,看输出是否会有不同。你可以预测问题的发生,依据预测构建脚本(即在需求之外运行脚本,预测失败百分比)。
这里有很多通过自动化运行任务时可能遇到的错误:
· 数据库连接错误导致丢失或损坏数据;
· 脚本漏洞和错误,任务没有正确完成;
· 来自网站或 API 的超时错误或者过多的请求错误;
· 边界问题,报告的数据或一部分没有保证一致,导致脚本错误;
· 服务器负载问题或其他的硬件问题;
· 时间不当,竞争条件(https://en.wikipedia.org/wiki/Race_condition,如果脚本依赖于之前其他任务的完成,竞争条件能够使数据无效)。
当然还有很多潜在的你无法预料的问题。你工作的团队越大,糟糕的文档、糟糕的理解、糟糕的团队沟通伤害自动化程序的可能性就越大。你无法预防每一个错误,但是可以尝试提供最好的团队沟通和文档。尽管如此,你同样需要接受有些时候自动化程序会失败。
为了为最后的失败准备,你会希望在问题发生时收到警报。你应该确定多少比例的错误是可接受的。不是每一种服务在 100% 的时间里都表现良好(因此存在状态页面);然而,我们可以追求完美,并确定自动化值得付出多少时间和努力。
根据你的自动化程序和它的弱点,这里有一些方法来应对这些问题。下面是一些构建弹性自动化系统的方式。
· 以特定的时间间隔重复失败的任务。
· 确保你的代码有很多的 try...except 代码块,让它能够处理错误。
· 在处理到机器、数据库或 API 的连接的代码周围,构建特殊的异常代码块。
· 定期维护和监控你为自动化使用的机器。
· 使用测试数据定期测试你的任务和自动化程序,确保它们正常执行。
· 注意脚本中出现的依赖、竞争条件和 API 规则,根据这些知识编写代码。
· 使用类似 requests 和 multiprocessing 的库,让困难的问题变得更简单,并尝试理解使脚本运行困难的问题所在。
我们会使用这其中的一些技术和想法,研究如何最好地监控和自动化脚本。现在,让我们讨论一下自动化中使用的工具,使数据处理更加容易和简单,并给出一些在哪里以及如何使用这些工具的建议。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论