Flask不能在@socketio.on.公司与偶数一起使用时

2024-06-01 07:40:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Eventlet来执行一些后台emit进程,但是自从开始使用Eventlet以来,@socketio.on下的每个处理程序下,request变量并没有按预期工作。例如,在普通的@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()

这些是进口货。在

^{pr2}$

背景发射功能(上图)

def testemit():
    """test"""
    while True:
        bg_emit()
        eventlet.sleep(1)

如何称呼(上图)

APP = Flask(__name__)
Compress(APP)
socketio = SocketIO(APP)

定义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)

服务器如何runexcept仅用于部署。(上图)

@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'):

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


Tags: fromimportappflaskmessagegetonrequest