我有一个大型(超过 600,000 条记录)数据库,作为 Django 应用程序的一部分。该应用程序存储从各种开放数据网络服务收集的信息。每隔一段时间(也许每周一次或更短时间)我需要检查这些网络服务以查看是否有任何数据已更新。
我编写了一个 python 脚本来执行此操作。它可以工作,但速度非常慢,我经常在它完成之前就收到此错误: ConnectionError: [Errno 104] Connection Reset by Peer
根据一些实验,我认为这个过程需要几天时间才能完成。除了优化我的脚本之外,处理这种长时间运行的 python 进程的最佳方法是什么?
最佳答案
看看celery它应该可以轻松地让您将后台作业分配给多个工作人员(也可以在不同的计算机上运行)。它还使您能够在失败时再次对作业进行排队并稍后重试...
为了优化您的脚本,您可能应该考虑使用多处理或使用异步库,例如 gevent (特别是如果您的作业执行大量 I/O,例如调用 Web 服务),这使您能够并行处理大量同时连接(最多 100 秒/1000 秒)。
关于python - 如何管理一个漫长(数天)的Python进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14509093/