【发布时间】:2019-05-14 10:47:36
【问题描述】:
我正在通过 ssh 在远程服务器上运行一些可能需要 3 到 4 个月才能完成(数据集传输)的任务,因此我使用 screen 运行 python 脚本来完成这项工作。
不幸的是,尽管我正确分离了所有 screen 会话 (Ctrl+a d),但在运行 6-8 天后连接中断(这发生了两次),所以我必须重新开始(以避免在数据集中重复转移)。
root$screen -r
There are several suitable screens on:
7567.noiselevel_script (Detached)
6046.airquality_script (Detached)
1448.weather_script (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.
root$screen -r 6046.airquality_script
595997it [167:43:10, 1.01s/it]
{"particles": null, "O3": 1.4509, "dateObserved": "2015-06-16T21:54:54+01:00", "name": "FEUP I-181 Calibration", "location": {"coordinates": [-8.594866, 41.178031]}}
595998it [167:43:11, 1.01s/it]
{"particles": null, "O3": 1.50961, "dateObserved": "2015-06-16T21:54:55+01:00", "name": "FEUP I-181 Calibration", "location": {"coordinates": [-8.594866, 41.178031]}}
595999it [167:43:12, 1.01s/it]
{"particles": null, "O3": 1.47883, "dateObserved": "2015-06-16T21:54:58+01:00", "name": "FEUP I-181 Calibration", "location": {"coordinates": [-8.594866, 41.178031]}}
596000it [167:43:13, 1.01s/it]connection already closed
你可以看到上面的connection already closed消息,脚本在596000it迭代后停止(不再运行)
我能否知道如何实现以下选项之一以避免这种挫败感:
- 避免这个
connection already closed问题,所以python 脚本运行直到所有数据集都被完全传输,或者 - 有一些方法可以继续从脚本上次中断的源数据库中获取数据集。
【问题讨论】:
-
选项 2 看起来更逼真。你手里有牌。创建一个文件来存储当前取得的进度,并实现一个选项来读回这个文件以从它停止的地方恢复计算
-
@Jean-FrançoisFabre 谢谢,我不确定如何在 python 中完成。
标签: python postgresql ssh gnu-screen