サーバでプログラムを動かし続ける時に気をつけること

研究でデータ収集した時に学んだことを書き留めておく.

タイムアウトの設定

サーバでクローリングを行う時は,必ず設定しておかなければならない.

タイムアウトを設定していないと,何らかの原因でデータが取得できない時に,そこでプログラムが止まってしまう.

pythonでは,以下のように設定できる.

import socket
socket.setdefaulttimeout(30) # 引数は秒数

executemany【sqlite3】

大量にデータを収集する時は,データごとにinsertするより,一気にinsertできるexecutemanyを使うのが速くてよい.

2倍くらい実行速度が違うらしい.

デタッチ

プログラムをバックグラウンドで動かし続けるには,通常nohupというコマンドを使うが,スクリーンのデタッチ(C-j d)の方が個人的にいいと思ってる.

nohupだと,プログラム実行時にコマンド指定しないといけないが,デタッチは実行途中でもおk.

要するにデタッチだと,「予想以上に実行に時間くってるけどもう帰らないといけない」的な時に途中でバックグラウンドジョブに変更できる.