greenlet.error:无法切换到不同的线程

我有一个 Flask 应用程序,在尝试将 Flask 与faust集成时出现此错误。

app.py

import mode.loop.eventlet

import logging

import logging.config

import json

from flask import Flask

from elasticapm.contrib.flask import ElasticAPM


def create_app():

    app = Flask(__name__)

    configure_apm(app)

    configure_logging()

    register_blueprints(app)

    register_commands(app)

    return app

main.py


from flask import jsonify

from litmus.app import create_app

from intercepter import Intercepter


app = create_app()

app.wsgi_app = Intercepter(app.wsgi_app , app)


@app.route('/status')

def status():

    return jsonify({'status': 'online'}), 200

另一个控制器


@api_blue_print.route('/v1/analyse', methods=['POST'])

def analyse():

    analyse_with_historic_data.send(value=[somedata])

    return jsonify({'message': 'Enqueued'}), 201

analyse_with_historic_data.py


@app.agent(analysis_topic)

async def analyse_with_historic_data(self, stream):

    async for op in stream:

        entity_log = EntityLog.where('id', op.entity_log_id).first()

我试图通过 monkey.patch_all 解决这个问题,但它也没有解决,给出了另一个无法释放锁的堆栈跟踪。



墨色风雨
浏览 282回答 2
2回答

慕桂英4014372

当我尝试使用 Pycharm 调试烧瓶应用程序时,类似的事情发生在我身上。为了最终解决我的问题,我最终做的是在 Pycharm 中启用 gevent 兼容性:文件 -> 设置 -> 构建、执行、部署 -> Python 调试器 -> Gevent 兼容

慕田峪7331174

如果之前的答案没有帮助,请在所有导入之前粘贴以下内容:from gevent import monkeymonkey.patch_all()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python