烧瓶请求上下文和芹菜

时间:2018-10-22 18:01:49

标签: python flask sqlalchemy celery flask-session

因此,我正在开发多租户Flask应用程序。我目前正在使用sqlalchemy和多模式模式。 要定义当前模式,请使用以下功能:

def on_pool_checkout(dbapi_conn, connection_rec, connection_proxy):

    cursor = dbapi_conn.cursor()

    if 'tenant' in session:
        query = "SET search_path TO {}, public;".format(session['tenant'])
        print(query)
        cursor.execute(query)
        dbapi_conn.commit()
        cursor.close()
        return

    cursor.execute("SET search_path TO public;")
    print('SCHEMA PUBLIC')
    dbapi_conn.commit()
    cursor.close()

event.listen(Pool, 'checkout', on_pool_checkout)

当我有请求上下文时,它很好用,但是当celery任务尝试使用连接时,我收到一条错误消息,说我不在请求上下文中工作。

是否可以通过celery任务访问会话,或者以其他方式与我的连接事件共享租户?

0 个答案:

没有答案