Итак, я разрабатываю мультитенантное приложение 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)
Это прекрасно работает, когда у меня есть контекст запроса, но когда задача сельдерея пытается использовать соединение, я получаю сообщение об ошибке, что я не работаю вконтекст запроса.
Есть ли способ получить доступ к сеансу в задаче сельдерея или каким-либо другим способом поделиться клиентом с моим событием подключения?