Comments (10)
we are hoping this means that fastapi will create a new database session
for every fastapi-session/request .
I hope this is correct ?
Yes that's right.
I see two options.
Option 1: Move the config to a self-contained file that doesn't have fastapi as a dependency. Then the session.py
module could be imported safely. This might not be desirable if the only setting you need in the workers is the sqlalchemy uri though.
Option 2: Make a get_sessionmaker_instance
function that takes a URI as an argument:
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
# from app.core import config # no longer necessary
def get_sessionmaker_instance(uri: str) -> sessionmaker:
engine = create_engine(uri, pool_pre_ping=True)
db_session = scoped_session(
sessionmaker(autocommit=False, autoflush=False, bind=engine)
)
Session = sessionmaker(autocommit=False, autoflush=False, bind=engine)
return Session
Then, instead of importing Session
from this module, you import the function, and optionally create a Session
in an app-specific file via
Session = get_sessionmaker_instance(config.SQLALCHEMY_DATABASE_URI)
, and do the same in worker code. Note -- to avoid reducing to option 1, you'll need a way to get the SQLALCHEMY_DATABASE_URI
that doesn't depend on the config
file. But that's going to be unavoidable if you are explicitly trying to not share dependencies that you want to use while generating your config.
from full-stack-fastapi-template.
closed with thanks
from full-stack-fastapi-template.
Hi sandys,
You can import Session
from app.db.session
in your worker.py
file and use it inside your tasks.
Cheers
from full-stack-fastapi-template.
from full-stack-fastapi-template.
Just put the session creation function in a self contained module that doesn't import fastapi code.
Then import that function into your fastapi code, and into your celery code.
from full-stack-fastapi-template.
from full-stack-fastapi-template.
from full-stack-fastapi-template.
@sandys What is the starlette vs pydantic config bug? I'm curious
from full-stack-fastapi-template.
from full-stack-fastapi-template.
Thanks for all the help here @dmontagu ! 🙇 🍰
@sandys I see you posted a link to another post asking about configs, here are the new FastAPI docs for configs and settings: https://fastapi.tiangolo.com/advanced/settings/
Thanks for reporting back and closing the issue 👍
from full-stack-fastapi-template.
Related Issues (20)
- How to start the backend server without using docker?
- FASTAPI
- 🐛 Error in frontend when resetting a password: "The passwords do not match" HOT 1
- AttributeError: module 'app.db.engine' has no attribute '_run_ddl_visitor' HOT 1
- How can I override my JWT auth dependency in the endponits in FastAPI testing?
- How do I get this running on local? HOT 3
- Deploying on a machine with nginx HOT 1
- Why React, not Vue?
- Mac M1 Docker error HOT 4
- Bad Gateway returned HOT 3
- [Improvement] Replace Prettier and Eslint with Biome and add pre-commit hooks HOT 1
- Feature Request: Support for GitHub Codespaces Deployment and Development HOT 2
- Login error in Dashboard HOT 5
- Secrets should not be versioned by default HOT 3
- Enable discussion on this repo? HOT 1
- Support the use of dev containers for reproducible dev environment HOT 1
- Embracing Technological Evolution: A Journey Toward Innovation
- Debug Launch Configuration for "Debug Frontend: (...)" does not work on WSL
- Z
- Running task 1 of 1: python .copier/update_dotenv.py /bin/sh: 1: python: not found HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from full-stack-fastapi-template.