У меня есть фляжное приложение, в котором я повторно использую функцию в скрипте Python (poll_servers.py). Я могу импортировать функцию и запустить ее, но я хочу поставить галочку, которая закроет функцию, если она запущена.
Вот мой код в скрипте python:
import os
import sys
# check if lock file exists, exit
if os.path.exists('static/poll.lock'):
sys.exit(1)
if not os.path.exists('static/poll.lock'):
with open('static/poll.lock', 'w'): pass
В моем app.py у меня есть:
from poll_servers import poll
@app.route('/poll_servers', methods=['GET'])
def poll_servers():
response = json.dumps({'status':'OK'})
poll()
return response
Я получаю сообщение об ошибке sys.exit(1)
в poll_servers.py:
File "app.py", line 109, in poll_servers
poll()
File ".../poll_servers.py", line 262, in poll
sys.exit(1)
File ".../venv/lib/python2.7/site.py", line 403, in __call__
raise SystemExit(code)
SystemExit: None
Есть идеи? Если я запускаю poll_servers.py сам по себе, sys.exit(1)
работает нормально.
У меня отлично работает, если я меняю static/poll.lock
на /tmp/poll.lock
.
Я добавил ошибку. По-прежнему выдает исключение при перемещении файла блокировки в каталог tmp
, как было предложено.
Файл может оставаться в static
, это ничего не изменит. Я просто использовал другой путь.
Возможный дубликат Приложение Python Flask не закрывается с выходом sys
Я не хочу, чтобы Flask закрывался, мне просто нужна импортированная функция poll
, чтобы остановить выполнение, если найден файл блокировки.
Тогда просто ничего не делайте и не меняйте порядок ваших утверждений if
:
import os
import sys
if not os.path.exists('static/poll.lock'):
with open('static/poll.lock', 'w'):
pass
else:
pass
# do something
Какая ошибка вылетает?