Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make compatible w/ ddtrace #452

Merged
merged 1 commit into from
Sep 24, 2024
Merged

Conversation

derekgliwa
Copy link
Contributor

@derekgliwa derekgliwa commented Sep 23, 2024


name: Pull Request
about: Propose changes to the codebase
title: '[PR] '
labels: ''
assignees: ''


Related Issue
#451

Proposed Changes
Updates the initialization of FastHTML to call parent class Starlette with keyword args.

Types of changes
What types of changes does your code introduce? Put an x in all the boxes that apply:

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist
Go over all the following points, and put an x in all the boxes that apply:

  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have added tests to cover my changes.
  • All new and existing tests passed.
  • I am aware that this is an nbdev project, and I have edited, cleaned, and synced the source notebooks instead of editing .py or .md files directly.

Additional Information
Any additional information, configuration or data that might be necessary to reproduce the issue.

Copy link

gitnotebooks bot commented Sep 23, 2024

Found 1 changed notebook. Review the changes at https://app.gitnotebooks.com/AnswerDotAI/fasthtml/pull/452

@jph00
Copy link
Contributor

jph00 commented Sep 23, 2024

Sorry there's not enough context in this PR to explain what it's for and what problems it solves.

@derekgliwa
Copy link
Contributor Author

derekgliwa commented Sep 23, 2024

@jph00 I can try to add a bit more info here. We're running a FastAPI app that mounts an instance of FastHTML:

app = FastAPI()

fasthtml_app = FastHTML()
fasthtml_app.router.add_route("/", ...)
  
app.mount("/ui", fast_html_app)

uvicorn.run(app, host=host, port=port)

I'm able to test and run locally no problem. However, our app in production uses ddtrace (which supports Starlette) for app telemetry and tracing in DataDog. Including FastHTML in the project is causing our app to fail to start (with the stacktrace listed in the linked issue). This is due to the ddtrace code attempting to inject some extra middleware for tracing. Their code attempts to add to middleware sequence that Starlette expects, but since the FastHTML initialization passes middleware as a positional argument, we get an error that Starlette.__init__() got multiple values for argument 'middleware'

This code change is simply to update the initialization logic in FastHTML to pass the middleware to Starlette as a keyword arg (instead of as a positional argument) so that ddtrace can add its extra middleware for tracing. It should be a non-breaking change.

New to contributing here, so if there's any way I can help add context to justify the change, please let me know!

@jph00 jph00 closed this Sep 24, 2024
@jph00 jph00 reopened this Sep 24, 2024
@jph00
Copy link
Contributor

jph00 commented Sep 24, 2024

New to contributing here, so if there's any way I can help add context to justify the change, please let me know!

Your explanation is now excellent and clear, thank you! :)

@jph00 jph00 merged commit deaf85c into AnswerDotAI:main Sep 24, 2024
1 of 2 checks passed
@jph00 jph00 added the enhancement New feature or request label Sep 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants