fix(telemetry): skip signal registration on non-main threads#4394
Open
thecaptain789 wants to merge 1 commit intocrewAIInc:mainfrom
Open
fix(telemetry): skip signal registration on non-main threads#4394thecaptain789 wants to merge 1 commit intocrewAIInc:mainfrom
thecaptain789 wants to merge 1 commit intocrewAIInc:mainfrom
Conversation
Add main thread check before attempting to register signal handlers. Signal handlers can only be registered from the main thread, and attempting to do so from other threads raises ValueError with noisy tracebacks. This commonly occurs when CrewAI is imported from web frameworks like Streamlit, Flask, Django, or Jupyter notebooks which may initialize imports from background threads. Fixes crewAIInc#4289
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.
Adds a main thread check before attempting to register signal handlers in the telemetry module.
Signal handlers can only be registered from the main thread, and attempting to do so from other threads raises ValueError with noisy tracebacks that clutter the console output.
This commonly occurs when CrewAI is imported from web frameworks like Streamlit, Flask, Django, or Jupyter notebooks which may initialize imports from background threads.
The fix adds a simple check at the start of
_register_shutdown_handlers():The
atexithandler is still registered since it works from any thread.Fixes #4289
Note
Low Risk
Small, localized change in shutdown/signal setup that mainly avoids exceptions in non-main-thread environments; it should not affect telemetry behavior in normal main-thread execution.
Overview
Prevents noisy
ValueErrortracebacks during telemetry initialization by skipping OS signal handler registration when not running on the main thread.Telemetry._register_shutdown_handlers()still registers theatexitshutdown hook, but now early-returns (with a debug log) before callingsignal.signal(...)when imported/initialized from background threads (common in web/notebook environments).Written by Cursor Bugbot for commit 1702644. This will update automatically on new commits. Configure here.