问题描述
SocketIO(app, async_mode=async_mode, cors_allowed_origins="*"),async_mode=‘eventlet’,定时任务用的apscheduler里的BackgroundScheduler,尽管后端日志显示发送消息成功,但是前端收不到。
解决方法
eventlet使用的是协程,BackgroundScheduler实际是线程,两者是矛盾的。因此需要把线程绿化或者改变async_mode为threading模式
方法一、async_mode=‘threading’
方法二、在使用BackgroundScheduler的文件中用猴子补丁
import eventlet
eventlet.monkey_patch()