| single |
# Django-RQ
[Build Status]
Django integration with [RQ], a [Redis] based Python queuing library.
[Django-RQ] is a simple app that allows you to configure your queues in
Django's `settings.py` and easily use them in your project.
## Support Django-RQ
If you find `django-rq` useful, please consider supporting its development
via [Tidelift].
## Requirements
- [Django] (3.2+)
- [RQ]
## Installation
- Install `django-rq` (or [download from PyPI]):
```bash
pip install django-rq
```
- Add `django_rq` to `INSTALLED_APPS` in `settings.py`:
```python
INSTALLED_APPS = (
# other apps
"django_rq",
)
```
- Configure your queues in Django's `settings.py`:
```python
RQ_QUEUES = {
'default': {
'HOST': 'localhost',
'PORT': 6379,
'DB': 0,
'USERNAME': 'some-user',
'PASSWORD': 'some-password',
'DEFAULT_TIMEOUT': 360,
'DEFAULT_RESULT_TTL': 800,
'REDIS_CLIENT_KWARGS': { # Eventual additional Redis connection
arguments
'ssl_cert_reqs': None,
},
},
'with-sentinel': {
'SENTINELS': [('localhost', 26736), ('localhost', 26737)],
'MASTER_NAME': 'redismaster',
'DB': 0,
# Redis username/password
'USERNAME': 'redis-user',
'PASSWORD': 'secret',
'SOCKET_TIMEOUT': 0.3,
'CONNECTION_KWARGS': { # Eventual additional Redis connection
arguments
'ssl': True
},
'SENTINEL_KWARGS': { # Eventual Sentinel connection arguments
# If Sentinel also has auth, username/password can be passed
here
'username': 'sentinel-user',
'password': 'secret',
},
},
'high': {
'URL': os.getenv('REDISTOGO_URL', 'redis://localhost:6379/0'), #
If you're on Heroku
'DEFAULT_TIMEOUT': 500,
},
'low': {
'HOST': 'localhost',
'PORT': 6379,
'DB': 0,
}
}
RQ_EXCEPTION_HANDLERS = ['path.to.my.handler'] # If you need custom
exception handlers
```
## Admin Integration
_New in Version 4.0_
Django-RQ automatically integrates with Django's admin interface. Once
installed, navigate to `/admin/django_rq/dashboard/` to access:
- Queue statistics and monitoring dashboard
- Job registry browsers (scheduled, started, finished, failed, deferred)
- Worker management
- Prometheus metrics endpoint (if `prometheus_client` is installed)
The views are automatically registered in Django admin and a link to the
dashboard is added to the admin interface's sidebar. If you want to disable
|