Запретить несколько экземпляров приложения Flask в IIS - PullRequest
1 голос
/ 05 августа 2020

Мы разработали Flask веб-приложение и хотим развернуть его в IIS. Во время разработки мы запустили приложение через flask run, который запускает единственный экземпляр нашего приложения. Однако в IIS мы заметили (через диспетчер задач), что наше приложение запускает несколько экземпляров одновременно.

Проблема в том, что наше приложение не предназначено для параллельной работы. Например, наше приложение считывает файл из файловой системы и сохраняет его в памяти для повышения эффективности. Эта оптимизация верна только в том случае, если гарантируется, что ни один другой процесс не изменит содержимое файла.

Есть ли способ предотвратить запуск нескольких экземпляров IIS?

Ответы [ 2 ]

1 голос
/ 07 августа 2020

В IIS вы можете go в настройки FastCGI, там вы можете увидеть все приложения, используемые веб-сайтами на вашем сервере. В столбце «Макс. Количество экземпляров» для сценария, о котором вы говорите, вероятно, установлено значение 0 (или какое-то значение больше 1), что означает, что его можно запускать несколько раз. Ограничение этого числа до 1 решит вашу проблему.

0 голосов
/ 06 августа 2020

вы можете использовать приведенный ниже код для запуска только одного экземпляра программы:

from tendo import singleton
me = singleton.SingleInstance() # will sys.exit(-1) if other instance is running

команда для установки:

pip install tendo

Ссылка:

Проверить, запущен ли сценарий python

Как сделать только один экземпляр одного и того же сценария запущенным в любое время

https://github.com/pycontribs/tendo/blob/master/tendo/singleton.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...