从greenlet中访问flask应用程序上下文

从greenlet中访问flask应用程序上下文,flask,gevent,greenlets,Flask,Gevent,Greenlets,我有一个flask脚本命令,它生成一个长序列的greenlet。问题是,这些greenlet无法访问我的应用程序上下文。我得到一份工作 “>始终失败,出现RuntimeError”(根据示例访问app.logger)。建议 关于我的尝试: 繁殖(方法、应用、arg1、arg2) 编辑:下面提供了对请求对象的访问权限,但没有访问当前应用程序,可能不是您正在搜索的内容 您可能正在查找烧瓶。请复制\u当前\u请求\u上下文(f),此处有文档记录: 例如: import gevent from flas

我有一个flask脚本命令,它生成一个长序列的greenlet。问题是,这些greenlet无法访问我的应用程序上下文。我得到一份工作 “>始终失败,出现RuntimeError”(根据示例访问app.logger)。建议

关于我的尝试: 繁殖(方法、应用、arg1、arg2)


编辑:下面提供了对
请求
对象的访问权限,但没有访问
当前应用程序
,可能不是您正在搜索的内容

您可能正在查找烧瓶。请复制\u当前\u请求\u上下文(f),此处有文档记录:

例如:

import gevent
from flask import copy_current_request_context

@app.route('/')
def index():
    @copy_current_request_context
    def do_some_work():
        # do some work here, it can access flask.request like you
        # would otherwise in the view function.
        ...
    gevent.spawn(do_some_work)
    return 'Regular response'

您可以通过请求传递相关信息的副本,例如

import gevent

@app.route('/')
def index():
    def do_some_work(data):
        # do some work here with data
        ...
    data = request.get_json()
    gevent.spawn(do_some_work, data)
    return 'Regular response'

谢谢你,埃米尔。实际上,我必须从flask脚本命令中重写call方法,以使事情正常进行。我可能因为xP太少而大惊小怪~如果
中的任何东西需要应用程序上下文,这将不起作用。如果您使用的是flask sqlalchemy、flask pymongo等,那么这包括任何数据库访问。
import gevent

@app.route('/')
def index():
    def do_some_work(data):
        # do some work here with data
        ...
    data = request.get_json()
    gevent.spawn(do_some_work, data)
    return 'Regular response'