python - 烧瓶请求上下文和芹菜
问题描述
所以,我正在开发一个多租户 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 任务中访问会话,或者以不同的方式与我的连接事件共享租户?
解决方案
推荐阅读
- python - 尝试使用 Huggingface Transformers 加载我自己的 SQuAD 数据集时出现 JSON 解析错误
- spring-boot - 有没有办法自定义 Spring Boot 管理墙板?
- python - 测量数据的特征/目标工程,同时避免目标/数据泄漏
- amazon-elastic-beanstalk - Team City 部署到 AWS Elastic Beanstalk - AWS 错误:应用程序版本“Application-Name-{Version-Number}”已经存在(新)
- sql - 慢连接取决于在它之外使用的条件
- javascript - 当用户查看页面的特定部分时如何更改导航栏图标的颜色
- docusignapi - 是否可以使用 DocuSign API 导出组织批量操作信封报告?
- html - 使用纯 css 的环形图是像素损坏的
- c# - 如何在 for 循环中获取 UserControl 的实际高度
- javascript - 使用 pptxgenjs 和 base64 per-encoded 图像生成 powerpoint