Jak mogę uruchomić wiele instancji aplikacji flask na tym samym serwerze internetowym i tym samym porcie?

Obecnie moja aplikacja flask ma następującą strukturę katalogów:

├── app
│   ├── __pycache__
│   ├── static
│   └── templates
├── instance
├── src
    └── __pycache__

Gdy aplikacja jest uruchamiana przy użyciu flask run, działa na domyślnym porcie localhost:5000.

Jestem w stanie stworzyć kopię aplikacji i uruchomić ją na dwóch portach 5000 i 5001 i działa dobrze.

Jednak chciałem użyć tylko jednego serwera z plikiem index.html, gdzie localhost:5000/index.html ma 2 linki do przekierowania do localhost:5000/app1/ dla aplikacji1 i localhost:5000/app2/ dla aplikacji2

Ma to na celu uniknięcie korzystania z dodatkowego portu.

Obecnie sklonowałem aplikację do app2, ale nie wiem, czy uruchomić dwie aplikacje (poniżej znajduje się struktura katalogów)

├── app
│   ├── __pycache__
│   ├── static
│   └── templates
├── app2
│   ├── __pycache__
│   ├── static
│   └── templates
├── instance
├── src
    └── __pycache__

Sprawdziłem również używanie schematów, ale według mojego rozumienia mają one służyć do różnych widoków.

0
Ashwin Geet D'Sa 2 kwiecień 2020, 15:04

3 odpowiedzi

Najlepsza odpowiedź

Aby to zrobić, możesz użyć oprogramowania pośredniczącego firmy Werkzeug. Pozwala na zamontowanie kilku aplikacji na ścieżkach montowania, takich jak /app1/ i /app2/.

Możesz przeczytać więcej na ten temat w dokumentacji werkzeug tutaj: https://werkzeug.palletsprojects.com/en/0.14.x/middlewares/

1
dmitrybelyakov 2 kwiecień 2020, 12:28

Nie musisz używać dwóch aplikacji. Możesz mieć index.html zawierać następujące wiersze kodu

@app.route('/app1')
def hello():
    return render_template('app1.html')

@app.route('/app2')
def hello():
    return render_template('app2.html')

Oznacza to, że możesz odwiedzić app1 lub app2 zgodnie ze specyfikacją (localhost:5000/app1) bez tworzenia wielu aplikacji

0
incarnadine 2 kwiecień 2020, 12:11

Powiedziałbym, że możesz uruchomić 2 aplikacje na różnych portach i użyć odwrotnego proxy do równoważenia obciążenia. Przeczytaj ten przewodnik.

Alternatywnie możesz uruchomić wiele wystąpień aplikacji za pomocą czegoś takiego jak gunicorn.

0
GalacticDessert 2 kwiecień 2020, 12:16