Comments (3)
A proposal:
from django.db import close_old_connections, reset_queries, transaction
import rq
class TransactionWorker(rq.Worker):
def perform_job(self, job):
reset_queries()
close_old_connections()
try:
with transaction.atomic():
super(TransactionWorker, self).perform_job(job)
finally:
close_old_connections()
I have extended a bit the scope of this ticket
It is important to re-assure there is a valid DB connection
At the moment if the rqworker loses the db connection you should restart it
But django request/response cycle has already the ability to reconnect:
https://github.com/django/django/blob/master/django/db/__init__.py
So I propose to use the same functions inside a new django_rq.TransactionWorker
from django-rq.
... Maybe the "transaction.atomic" could be activated only if settings.DATABASES["default"]["ATOMIC_REQUESTS"]
is set ...
from django-rq.
I changed my mind. I think it is better I don't overlap responsibilities between transaction-management and connection-management
The user should simply simply use the decorator transaction.atomic to wrap job execution in a Django transaction
In this way it is up to the user to correctly decorate the function enqueued and django-rq can be agnostic about it
I propose to close this ticket
On the other side, the connection management should be up to the framework: the same policy django uses to manage databases and connections should be used by django-rq workers
I have created another ticket specific to this last issue: #216
from django-rq.
Related Issues (20)
- django.core.exceptions.ImproperlyConfigured: Requested setting RQ_SHOW_ADMIN_LINK, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. HOT 2
- Worker pool implementation
- job_timeout is not killing subprocess
- Separate RQScheduler into its own fake model
- RQ Job Terminated Unexpectedly HOT 2
- Allow Specifying Default Serializer for Django-RQ Queue HOT 2
- How to run django-rq worker via Webhook/API call HOT 1
- Django dumpdata will fail because of unmanaged model HOT 1
- KeyError accessing stats page HOT 2
- Error in job_detail.html at line 226 HOT 2
- Sentinel support broken since 2.9.0 HOT 5
- Add support for floating point intervals in rescheduler command HOT 1
- ValueError: Invalid attribute name/AttributeError: module has no attribute
- keys of command in MULTI calls must be in same slot HOT 1
- TypeError in job_detail.html with Python 12 HOT 3
- Database Errors When Running rqworker-pool HOT 14
- RQ WorkerPool is not loading models at all
- `get_scheduler` should support a custom connection
- Tag 2.10.2 on Git HOT 2
- rqworker-pool and --with-scheduler together
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-rq.