Comments (10)
I thought of the same thing about package diversity. One really good package would be a lot better than two decent ones.
A lot of work would, however, go into possibly merging the packages or porting essential functionality between code bases. On the other hand maintaining multiple different packages for the same purpose can be some work.
I think django-watchman
offers much of our functionality but at the current moment it
- does not look to be super actively maintained / developed: there is a pile of open issues and some PRs in there
- does include some features that could be considered bloat with all the token authentication, management commands and other ideas
- is not SE4 compliant either
- does not implement some checks like Celery out of the box
- does not have as mature tooling and integrations
The architectures are a bit different taking into consideration the decorator based check registrations and configuration model.
I do think we should initiate a conversation about the current state of the packages and joining forces, though, if we could manage something like that in near future. I don't know what @mwarkentin has planned for Watchman 1.0 release and other stuff :)
from django-health-check.
@morenoh149 we implement ASG, that could be documented I guess. Also @aleksihakli is working on a JSON endpoint. That should Healthcheck I guess. @aleksihakli what do you think?
from django-health-check.
GTG is implemented functionally as well. Config is ready SE4 spec wise in #80.
I think conforming to the SE4 check spec would be smart and we could gradually extend the current API with SE4 endpoints that we want to offer externally. I think the smart ones would be:
- Service Canary (ASG, externally available)
- Good-to-Go (GTG, externally available)
- Config (externally available)
- Healthcheck (externally available?)
- Status (internally available?)
Does that seem reasonable?
from django-health-check.
In my implementation I only made gtg and asg openly available. Making config available felt like it'd make it too easy to hack the service.
from django-health-check.
On a closer inspection we currently don't support GTG as we only check if plugins succeed from checks. A failure means the service is in non-operational state. We don't have a "partially working" check. We only offer "working" or "not working".
I guess we could add a text/plain
response with "OK"
easily and people could register the health check endpoint under /service/asg
(or /service/gtg
) URLs if they so want.
The question is whether we want to offer text/plain
as the default reply if no Accept
header is defined - at the moment we render text/html
and changing the default response types is breaking the old functionality and warrants a release if we want to change that functionality.
The correct partial implementation of SE4, I guess, would be to offer:
^/service/asg/?$
with the current health check andtext/plain
as the default response type, continuing to offerapplication/html
responses to browser requests andapplication/json
to machine-readable requests; and also add^/service/gtg/?$
URL with partially working checks - i.e. add "downgraded" option for statuses.
from django-health-check.
@aleksihakli have you seen: https://github.com/mwarkentin/django-watchman
I haven't tested it yet, since I just found it. Looks very promising.
from django-health-check.
@codingjoe Watchman seems pretty neat but it isn't very KISS to be honest. A lot of features and feature duplication in there and you can't toggle some features. The design seems very mature though and I like the schemas they use. I think we should adopt some of them good ideas.
Do you mean the JSON schemas or other things as well?
from django-health-check.
Yeah, I know. Question is, do we want to bloat this package, or keep it very very simple. Furthermore, I don't know if we shouldn't join forces. I don't know if this topic is worth package diversity.
from django-health-check.
Ok, I agree. Honestly I'm happy what this package does so far. It could be better, but it does the job.
from django-health-check.
We are also just using the simplicity of django health check and we're happy with the limited feature set, which on the contrary makes it a super easy component to add to any django app we deploy.
from django-health-check.
Related Issues (20)
- CeleryPingHealthCheck is catching BaseException and really, *really*, **really** shouldn't :smile:
- Provide an option to disable checks in threads HOT 3
- Provide a fix to avoid " The DEFAULT_FILE_STORAGE setting is deprecated" HOT 1
- Question: how do I disable Celery Task received/succeeded log messages HOT 1
- Cache key does not match, what problem could it be? HOT 7
- AttributeError: 'ChannelPromise' object has no attribute '__value__' HOT 1
- It doesn't work with Django 4.1 HOT 5
- health_check.exceptions.ServiceUnavailable: unavailable: Unknown exception HOT 1
- Redis SSL HOT 1
- Django health check endpoints doesnt appear in generated openapi schema
- Celery health check timeout exceptions and TaskRevokedError HOT 1
- Weblog at the end of the Readme doesn't exist anymore HOT 1
- Cache check backend is documented in the wrong place
- A new release was required. HOT 1
- Issue with S3Boto3StorageHealthCheck Failing After Upgrading to django-health-check 3.18.0 on Django 5.0 HOT 5
- Bug: check_status() fails after upgrading to 3.18 HOT 1
- Custom error reporter or filter
- Connection refused on Celery health checks HOT 6
- Allow CeleryPingHealthCheck to check user-specific queues HOT 2
- CacheBackend subset key confusing
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 django-health-check.