Python 烧瓶罐';与Eventlet一起使用时,无法访问@socketio.on下的Cookie

Python 烧瓶罐';与Eventlet一起使用时,无法访问@socketio.on下的Cookie,python,cookies,flask,eventlet,Python,Cookies,Flask,Eventlet,我正在使用Eventlet来执行一些后台发出进程,但自从开始使用Eventlet以来,在@socketio.下的每个处理程序下,上的请求变量并没有按预期工作。例如,在普通的@APP.route('/abc/')下,我可以使用request.cookies.get('csrf'),等等。但是在@socketio.on下,request就不一样了request.cookies.get(“…”)每次都返回None import json import os import time import eve

我正在使用Eventlet来执行一些后台
发出
进程,但自从开始使用Eventlet以来,在
@socketio.下的每个处理程序下,
上的
请求
变量并没有按预期工作。例如,在普通的
@APP.route('/abc/')
下,我可以使用
request.cookies.get('csrf')
,等等。但是在
@socketio.on
下,
request
就不一样了
request.cookies.get(“…”)
每次都返回
None

import json
import os
import time
import eventlet
import gamble
import eng_puzzle
import authentication
import gcaptchacheck
from flask import Flask, redirect, url_for, request, render_template, make_response
from flask_compress import Compress
from flask_socketio import SocketIO, send, emit
from flask_sslify import SSLify
from store import REDISDB

eventlet.monkey_patch()
这些是进口货

def bg_emit():
    """Background emit"""
    currentpotinfo = json.loads(REDISDB.get('potinfo').decode('UTF-8'))
    pot_info = {
        'id': currentpotinfo['id'],
        'endtime': currentpotinfo['starttime'] + 30 - int(time.time()),
        'hashwin': currentpotinfo['hashwin'],
        'message': 'Entries closing in: ',
        'winner': 'Not yet chosen'
    }
    socketio.emit('infoupdate', {'info': pot_info}, broadcast=True)
背景发射功能(上图)

如何称呼它(如上)

定义
APP
socketio
(如上)

服务器是如何运行的。除之外的
仅用于部署。(上文)


有麻烦的地方之一<代码>身份验证
是用于站点范围内身份验证的自定义脚本。有调试消息,它们证明每次调用cookie时都返回
None
。我怎样才能避开这个问题?问题本身有解决办法吗?还是我必须自己解决问题?

我只是将auth cookie附加到请求正文中。该网站使用https/HST,所以这不是一个问题(我认为)。不过可能不是最好的解决方案……为了记录在案,我只是将auth cookie附加到请求主体。该网站使用https/HST,所以这不是一个问题(我认为)。也许不是最好的解决方案。。。
def testemit():
    """test"""
    while True:
        bg_emit()
        eventlet.sleep(1)
APP = Flask(__name__)
Compress(APP)
socketio = SocketIO(APP)
if __name__ == '__main__':
    print('RUN')
    eventlet.spawn(testemit)
    try:
        socketio.run(APP, port=80, debug=True)
    except PermissionError:
        HPORT = int(os.environ.get('PORT'))
        socketio.run(APP, port=HPORT, debug=False)
@socketio.on('pot')
def handle_message(message):
    """Handle messages"""
    print(message)
    user = authentication.checksession(request)
    print('user', user)
    print(request.cookies.get('csrf'))
    if user and request.cookies.get('csrf') == message.get('csrf'):