簡體   English   中英

Google Cloud 應用引擎 flex env 上的 Flask-Socketio 服務器

[英]Flask-Socketio server on Google Cloud app engine flex env

我想在應用引擎上部署一個 Flask socketio 服務器。 這是服務器的導入和運行:

 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)

這是我的 app.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=3&transport=polling&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,我希望服務器在后台運行。

你能幫我嗎? 謝謝

修復。 我將session_affinity設置為 true,然后將entrypoint更改為:

entrypoint: gunicorn -b :8080 -k eventlet main:app

App 引擎僅適用於 8080 端口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM