mirror of
https://github.com/django-q2/django-q2.git
synced 2026-10-07 04:38:11 +08:00
check for default database on mongo connection
This commit is contained in:
@@ -1,11 +1,12 @@
|
|||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
from bson import ObjectId
|
from bson import ObjectId
|
||||||
|
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
from pymongo import MongoClient
|
from pymongo import MongoClient
|
||||||
|
|
||||||
|
from pymongo.errors import ConfigurationError
|
||||||
|
|
||||||
from django_q.brokers import Broker
|
from django_q.brokers import Broker
|
||||||
from django_q.conf import Conf
|
from django_q.conf import Conf
|
||||||
|
|
||||||
@@ -17,12 +18,20 @@ def _timeout():
|
|||||||
class Mongo(Broker):
|
class Mongo(Broker):
|
||||||
def __init__(self, list_key=Conf.PREFIX):
|
def __init__(self, list_key=Conf.PREFIX):
|
||||||
super(Mongo, self).__init__(list_key)
|
super(Mongo, self).__init__(list_key)
|
||||||
self.collection = self.connection[Conf.MONGO_DB][list_key]
|
self.collection = self.get_collection()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_connection(list_key=Conf.PREFIX):
|
def get_connection(list_key=Conf.PREFIX):
|
||||||
return MongoClient(**Conf.MONGO)
|
return MongoClient(**Conf.MONGO)
|
||||||
|
|
||||||
|
def get_collection(self):
|
||||||
|
if not Conf.MONGO_DB:
|
||||||
|
try:
|
||||||
|
Conf.MONGO_DB = self.connection.get_default_database()[1]
|
||||||
|
except ConfigurationError:
|
||||||
|
Conf.MONGO_DB = 'django-q'
|
||||||
|
return self.connection[Conf.MONGO_DB][self.list_key]
|
||||||
|
|
||||||
def queue_size(self):
|
def queue_size(self):
|
||||||
return self.collection.count({'lock': {'$lte': _timeout()}})
|
return self.collection.count({'lock': {'$lte': _timeout()}})
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -52,7 +52,7 @@ class Conf(object):
|
|||||||
|
|
||||||
# MongoDB broker
|
# MongoDB broker
|
||||||
MONGO = conf.get('mongo', None)
|
MONGO = conf.get('mongo', None)
|
||||||
MONGO_DB = conf.get('mongo_db', 'django-q')
|
MONGO_DB = conf.get('mongo_db', None)
|
||||||
|
|
||||||
# Name of the cluster or site. For when you run multiple sites on one redis server
|
# Name of the cluster or site. For when you run multiple sites on one redis server
|
||||||
PREFIX = conf.get('name', 'default')
|
PREFIX = conf.get('name', 'default')
|
||||||
|
|||||||
+2
-1
@@ -285,11 +285,12 @@ To use MongoDB as a message broker you simply provide the connection information
|
|||||||
}
|
}
|
||||||
|
|
||||||
The ``mongo`` dictionary can contain any of the parameters exposed by pymongo's `MongoClient <https://api.mongodb.org/python/current/api/pymongo/mongo_client.html#pymongo.mongo_client.MongoClient>`__
|
The ``mongo`` dictionary can contain any of the parameters exposed by pymongo's `MongoClient <https://api.mongodb.org/python/current/api/pymongo/mongo_client.html#pymongo.mongo_client.MongoClient>`__
|
||||||
|
If you want to use a mongodb uri, you can supply it as the ``host`` parameter.
|
||||||
|
|
||||||
mongo_db
|
mongo_db
|
||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
When using the MongoDB broker you can optionally provide a database name to use for the queues.
|
When using the MongoDB broker you can optionally provide a database name to use for the queues.
|
||||||
Defaults to ``django-q``
|
Defaults to default database if available, otherwise ``django-q``
|
||||||
|
|
||||||
.. _bulk:
|
.. _bulk:
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user