Open jeremydvoss opened 1 year ago
Flask docs recommend "from flask import Flask"
NOTE: A previous version of this issue wrongfully identified the docs as broken because they use "from flask import Flask". However, because those same docs use "instrument_app(app)" instead of "instrument()", it still works.
Does it work if you swap the order?
from opentelemetry.instrumentation.flask import FlaskInstrumentor
FlaskInstrumentor().instrument()
from flask import Flask
# ...
Yes. I also just confirmed that because auto-instrumentation triggers before any imports, from flask import Flask works for that as well.
@jeremydvoss
Status of this?
Sounds like we can close this then @jeremydvoss ?
Creating a Flask app involves a series of steps. Flask is a lightweight web framework for Python that is widely used for building web applications. Here's a simple example to help you get started:
Install Flask:
Ensure you have Python installed on your system. You can install Flask using pip
, the Python package installer. Open your terminal or command prompt and run the following command:
pip install Flask
Create Your Flask App: Create a new directory for your Flask app and navigate to it in the terminal.
mkdir my_flask_app
cd my_flask_app
Create a Python Script:
Inside your app directory, create a Python script (e.g., app.py
) with the following content:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(debug=True)
Run Your Flask App: In the terminal, run the following command to start your Flask app:
python app.py
This will start the development server, and you should see output indicating that the server is running. By default, your app will be accessible at http://127.0.0.1:5000/
or http://localhost:5000/
.
Access Your App:
Open a web browser and go to http://127.0.0.1:5000/
or http://localhost:5000/
. You should see the "Hello, World!" message.
Congratulations! You've just created a simple Flask app. From here, you can start building more complex applications by defining additional routes, handling form submissions, and connecting to databases.
Remember that this is a basic example, and as your app grows, you may want to structure it differently, use templates for HTML rendering, and add more features based on your requirements. Refer to the Flask documentation for more detailed information and advanced topics.
We just experienced this, so I think it's still open, right? We're going to explicitly use the FlaskInstrumentor call for now.
I also experienced this with the FastAPI instrumentor, where I'd previously been using "from fastapi import FastAPI". Seems to work once I changed it to "import fastapi".
Describe your environment
Steps to reproduce Flask does not work with "from flask import Flask":
What is the expected behavior? Flask calls should be instrumented
What is the actual behavior? Flask calls are not instrumentated
Additional context The instrumentation only works if the imports are set up as such:
It also works if you use the instrument_app method instead: