purple-plastic-57801
03/10/2024, 2:29 AMimport os
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
"""Example Hello World route."""
name = os.environ.get("NAME", "World")
return f"Hello {name}!"
if __name__ == "__main__":
app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
Located at src/python/playground/hello_cloud_run/main.py
I can run it with pants run src/python/playground/hello_cloud_run/main.py
When I add a pex_binary...
python_sources(name="lib")
pex_binary(name="hello_cloud_run", entry_point="main.py")
If I go to run the pex_binary I see..
pants run src/python/playground/hello_cloud_run:hello_cloud_run
* Serving Flask app 'main' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on all addresses.
WARNING: This is a development server. Do not use it in a production deployment.
* Running on <http://192.168.1.33:8080/> (Press CTRL+C to quit)
* Restarting with stat
/home/geethree/.pyenv/versions/3.9.18/bin/python3.9: Error while finding module specification for 'playground.hello_cloud_run.main' (ModuleNotFoundError: No module named 'playground')
purple-plastic-57801
03/10/2024, 2:29 AMpurple-plastic-57801
03/10/2024, 2:29 AMpurple-plastic-57801
03/10/2024, 2:30 AM/src/python
purple-plastic-57801
03/10/2024, 2:44 AMdist/src.python.playground.hello_cloud_run$ tree -L 3 pex/
pex/
├── __main__.py
├── __pex__
│ └── __init__.py
├── PEX-INFO
└── playground
├── hello_cloud_run
│ ├── __init__.py
│ └── main.py
└── __init__.py
purple-plastic-57801
03/10/2024, 2:49 AMuse_reloader
option that debug option of flask.run sets in werkzeug..
https://werkzeug.palletsprojects.com/en/2.3.x/serving/#werkzeug.serving.run_simplegentle-flower-25372
03/10/2024, 1:08 PMhappy-kitchen-89482
03/10/2024, 4:35 PMhappy-kitchen-89482
03/10/2024, 4:36 PMhappy-kitchen-89482
03/10/2024, 4:38 PMhappy-kitchen-89482
03/10/2024, 4:39 PMpants run
)?happy-kitchen-89482
03/10/2024, 4:43 PMdazzling-elephant-33766
03/11/2024, 11:02 AMpex_binary(
name="flask",
entry_point="flask",
args=["--app", "app.py"],
)
Instead of running the script pointing at main.
pants run :flask -- run --debug
Or something like:
pex_binary(
name="flask",
entry_point="flask",
args=["--env-file", ".env"],
dependencies=["app.py", "//:root#python-dotenv"],
)
To load configuration from .env
with python-dotenv
gentle-flower-25372
03/11/2024, 12:45 PMgentle-flower-25372
03/11/2024, 12:46 PM