我使用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)
服务器如何run
。except
仅用于部署。(上图)
@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
。我怎样才能避开这个问题?问题本身有解决办法吗?还是我必须自己解决?在
目前没有回答
相关问题 更多 >
编程相关推荐