Недавно я разрабатывал несколько сайтов с использованием Flask (работает на debian в virtualenv), и когда я тестирую, я могу запустить его на порту, скажем, post 5000.
Итак, я запускаю сценарий так:
. env/bin/activate <- go into virtual environment
python file.py <- run python script
И мне передадут это сообщение:
Running on http://0.0.0.0:5000/
Так что все это отлично работает, и я могу получить доступ к своему сайту через этот порт. Однако ... мой мусорный интернет-провайдер всегда делает это, сбрасывая что-то около часа ночи каждое утро. Я понятия не имею, что это, все работает как обычно, но я всегда отключаюсь от любых открытых сеансов SSH. Это оставляет его работающим, и все, что я могу сделать, это позвонить:
lsof -i
Это покажет мне процесс, но если я убью его, а затем перезапущу, все станет странно. В:
Running on http://0.0.0.0:5000
сообщение все еще отображается, но я больше не могу к нему подключиться. Я пробовал изменить номер порта, и, похоже, единственное, что работает, - это повторить попытку позже или в другой день. Теперь я предполагаю, что что-то на моем сервере сбрасывается в промежутке между этими временами, и я хотел бы думать, что, возможно, время ожидания сеанса virtualenv истекло, но я не могу узнать, как это сделать вручную, кто-нибудь знает?
Я не уверен, что там происходит, но если у вас нестабильное соединение ssh, используйте tmux.
tmux
Он откроет сеанс терминала, который находится внутри контейнера, к которому вы можете подключиться позже. Все, что работает внутри этого виртуального терминала, будет продолжать работать, если сеанс отключится. Итак, после того, как вас выгнали, снова зайдите по ssh и запустите
tmux attach
тогда вы продолжите с того места, где остановились.
Есть еще одна, более старая программа, которая делает это, также называемое «экраном», но, хотя ее можно найти чаще, она не поддерживается активно.