Comments (8)
mounted applications will have lifetime events passed to them.
For stuff like database connections you’d probably have a global connection pool object, and use it from both places.
Middleware around parent applications would be able to pass context down to their children too, which might also be helpful here. (Docs and better support for that is incoming)
from starlette.
@freakypie See also #58 (comment)
from starlette.
awesome thanks!
from starlette.
Thanks for that! I'm assuming these decorators will reference the app inside the decorated function somehow, so various lifetime objects can be attached directly to it?
On a related note, is there a way to access a "parent" app by its "children"? So e.g. if I do:
app = Starlette()
foo = Router([
Path('/bar', FooBar),
Path('/baz', FooBaz)
])
app.mount('/foo', foo)
Do FooBar
and FooBaz
have access to app
(and foo
) in some way? And any attached lifetime objects? The idea is that we could instantiate a database connection on the top app and reuse it below.
from starlette.
would @app.shutdown
be a good place to shutdown websockets that are in a while true
loop?
from starlette.
Use the websocket.disconnect
message to handle that case. (Servers should disconnect connections and allow a short timeout for task completion prior to shutdown.)
from starlette.
Sorry, just starting out, ( and newish to python ) but I found this issue from #63 and i'm wondering if it's possible to use a database (leveraging https://github.com/MagicStack/asyncpg for example) with starlette? Or do we have to wait until 1.0?
from starlette.
@dfcarpenter I got your back here.
Upgrade to the latest uvicorn and latest starlette, for nice startup/cleanup support.
https://www.starlette.io/events/
There's workarounds before now, but this is really what we want for doing things like initializing a database connection pool within an async context.
from starlette.
Related Issues (20)
- I have a problem about livestreaming connection starlette.websockets.WebSocketDisconnect: 1006
- error, when open env file. contained non-ascii string HOT 1
- SystemError when using gradio==4.12.0 with starlette>=0.30.0 on Python3.8 HOT 1
- Drop `python-multipart` dependency
- Warn users if setting too large of a session object
- Typing error for app.add_exception_handler (Argument "handler" to "add_exception_handler" of "Starlette" has incompatible type) HOT 1
- TrustedHostMiddleware raises RuntimeError on sending response to websocket HOT 2
- typing map _RequestData in testclient.py might be missing type bytes HOT 2
- Enable `branch = true` for `coverage.run` HOT 4
- Fetching API docs occasionally fails at starlette framework middleware issue with streaming large responses
- links on the release-notes not found. HOT 1
- Add `Partitioned` cookie attribute HOT 2
- `RuntimeError("No response returned")` in `BaseHTTPMiddleware` HOT 3
- Incompatibility with anyio v3
- TestClient DeprecationWarning with httpx 0.27.0 HOT 4
- Bug: `_TemplateResponse` is still relying on `request` key from `context` which maybe different from `request` argument to `TemplateResponse`. HOT 4
- How to change the value of request body?
- A `RuntimeError: Stream consumed` error is raised when `request.body()` is read in the custom middleware
- CORSMiddleware always add access-control-allow-credentials regardless of Origin
- ValueError when null byte in URL HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from starlette.