Add error handling and logging to startup#66
Open
railway-app[bot] wants to merge 1 commit into
Open
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The forkcast backend crashes silently during startup, failing healthcheck. The lifespan function in backend/api/main.py performs several async initialization steps (database, vector store, LangGraph checkpointer, LangFuse, Anthropic client, graph creation, background tasks) with no error handling, so when one fails the process exits before binding to port 8000, leaving only "Starting Forkcast 🍴" in the logs with no indication of the actual cause.
Solution
Wrapped each startup step in try-except blocks that log the exception message, type, and traceback via structlog before re-raising as a RuntimeError with a clear description of which step failed (database, vector store, checkpointer, Anthropic client, graph, or background tasks). LangFuse initialization is now non-blocking: failures are logged as a warning and fall back to a null handler instead of crashing the app, matching its existing fallback behavior. This will surface the exact failing step in deploy logs so the underlying issue (e.g. missing env var, unreachable database) can be diagnosed and fixed.
Changes
backend/api/main.pyGenerated by Railway