2016-01-24 2 views
1

Я добавляю поддержку флэшей к плагиновскому приложению. При запуске приложение создает несколько классов плагинов. Я думал, что это будет так же просто, как запустить Flask при инициализации класса, но вместо этого все приложение зависает, когда оно попадает в метод запуска Flask.Инициализация стоп-фляги от блокировки

Рассмотрим следующий пример:

#!/usr/bin/env python 

from flask import Flask 

class TestClass: 
    def __init__(self): 
     print('Initializing an instance of TestClass') 
     self.app = Flask(__name__) 
     self.app.run() 
     print("Won't get here until Flask terminates!") 


foo = TestClass() 

Вторая линия печати не будет оцениваться, пока настой не будет прекращено.

Есть ли разумный способ заставить app.run в фоновом режиме, чтобы класс продолжал свои шаги инициализации, сохраняя при этом возможность общаться с Flask во всем остальном классе?

+0

Если ваша цель - проверить ваше приложение, вы должны использовать тестовый клиент. – dirn

+0

Нет, конечная цель не тестируется - фрагмент кода был просто самым простым способом показать поведение. –

ответ

1

Приложение не «висит», цель app.run - запустить постоянный серверный процесс, который выполняется до явного закрытия. Перед запуском сервера вы должны запустить всю логику установки.

Если вам нужно запустить задачи после инициализации процесса сервера приложений, вы можете отправить их в другой процесс с чем-то вроде Celery.

1

Также обратите внимание, что вы можете начать Flask в отдельной теме с некоторыми ограничениями. См. this answer.

Смежные вопросы