#angular #google-app-engine #flask #socket.io
#angular #google-app-engine #flask #socket.io
Вопрос:
Я хочу развернуть сервер flask socketio в App Engine. Это импорт и запуск сервера:
from typing import List
from flask_socketio import SocketIO, join_room, leave_room, send, emit
from flask import Flask, render_template, request, session, url_for
import sys
import numpy as np
import random
import re
import itertools
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret-key'
socketio = SocketIO(app, cors_allowed_origins="*")
...
if __name__ == '__main__':
socketio.run(app, port='8080', debug=True)
Это мое приложение.yaml:
runtime: python
env: flex
service: server
entrypoint: python3 main.py
runtime_config:
python_version: 3
automatic_scaling:
min_num_instances: 1
max_num_instances: 2
Я использую angular в качестве клиента, и он подключается к этой строке:
this.socket = io('https://my-server-url.appspot.com');
Когда я пытаюсь запустить приложение angular, оно говорит
Access to XMLHttpRequest at 'https://server-url.appspot.com/socket.io/?EIO=3amp;transport=pollingamp;t=NJu9Zq7' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Я также попытался установить для параметра cors_allowed_origins значение [], но это тоже не сработало.
Я также попытался установить привязку сеанса к true, и это тоже не сработало.
заголовок присутствует в запрошенном ресурсе.
Я не открывал URL-адрес сервера на другой вкладке, и я хочу, чтобы сервер работал в фоновом режиме.
Вы можете помочь? Спасибо
Ответ №1:
Исправлено. Я установил значение session_affinity
true, а затем изменил значение entrypoint
на:
entrypoint: gunicorn -b :8080 -k eventlet main:app
App engine работает только с портом 8080.
Комментарии:
1. Привет, не могли бы вы объяснить эту
eventlet
часть… потому что, когда я использую его в своем приложении flask yaml, оно не будет развернуто.