コード例 #1
0
 def test_package(self):
     from kombu.entity import Exchange
     self.assertIs(
         utils.symbol_by_name('.entity:Exchange', package='kombu'),
         Exchange,
     )
     self.assertTrue(utils.symbol_by_name(':Consumer', package='kombu'))
コード例 #2
0
ファイル: test_utils.py プロジェクト: FluidInc/8b-kombu
 def test_package(self):
     from kombu.entity import Exchange
     self.assertIs(
         utils.symbol_by_name('.entity:Exchange', package='kombu'),
         Exchange,
     )
     self.assertTrue(utils.symbol_by_name(':Consumer', package='kombu'))
コード例 #3
0
ファイル: django.py プロジェクト: SalesSeek/celery
    def __init__(self, app):
        self.app = app
        self.db_reuse_max = self.app.conf.get('CELERY_DB_REUSE_MAX', None)
        self._db = import_module('django.db')
        self._cache = import_module('django.core.cache')
        self._settings = symbol_by_name('django.conf:settings')
        self._mail_admins = symbol_by_name('django.core.mail:mail_admins')

        # Current time and date
        try:
            self._now = symbol_by_name('django.utils.timezone:now')
        except ImportError:  # pre django-1.4
            self._now = datetime.now  # noqa

        # Database-related exceptions.
        DatabaseError = symbol_by_name('django.db:DatabaseError')
        try:
            import MySQLdb as mysql
            _my_database_errors = (mysql.DatabaseError,
                                   mysql.InterfaceError,
                                   mysql.OperationalError)
        except ImportError:
            _my_database_errors = ()      # noqa
        try:
            import psycopg2 as pg
            _pg_database_errors = (pg.DatabaseError,
                                   pg.InterfaceError,
                                   pg.OperationalError)
        except ImportError:
            _pg_database_errors = ()      # noqa
        try:
            import sqlite3
            _lite_database_errors = (sqlite3.DatabaseError,
                                     sqlite3.InterfaceError,
                                     sqlite3.OperationalError)
        except ImportError:
            _lite_database_errors = ()    # noqa
        try:
            import cx_Oracle as oracle
            _oracle_database_errors = (oracle.DatabaseError,
                                       oracle.InterfaceError,
                                       oracle.OperationalError)
        except ImportError:
            _oracle_database_errors = ()  # noqa

        try:
            self._close_old_connections = symbol_by_name(
                'django.db:close_old_connections',
            )
        except ImportError:
            self._close_old_connections = None
        self.database_errors = (
            (DatabaseError, ) +
            _my_database_errors +
            _pg_database_errors +
            _lite_database_errors +
            _oracle_database_errors
        )
コード例 #4
0
    def __init__(self, app):
        self.app = app
        self.db_reuse_max = self.app.conf.get('CELERY_DB_REUSE_MAX', None)
        self._db = import_module('django.db')
        self._cache = import_module('django.core.cache')
        self._settings = symbol_by_name('django.conf:settings')

        try:
            self.interface_errors = (
                symbol_by_name('django.db.utils.InterfaceError'),
            )
        except (ImportError, AttributeError):
            self._interface_errors = ()

        # Database-related exceptions.
        DatabaseError = symbol_by_name('django.db:DatabaseError')
        try:
            import MySQLdb as mysql
            _my_database_errors = (mysql.DatabaseError,
                                   mysql.InterfaceError,
                                   mysql.OperationalError)
        except ImportError:
            _my_database_errors = ()      # noqa
        try:
            import psycopg2 as pg
            _pg_database_errors = (pg.DatabaseError,
                                   pg.InterfaceError,
                                   pg.OperationalError)
        except ImportError:
            _pg_database_errors = ()      # noqa
        try:
            import sqlite3
            _lite_database_errors = (sqlite3.DatabaseError,
                                     sqlite3.InterfaceError,
                                     sqlite3.OperationalError)
        except ImportError:
            _lite_database_errors = ()    # noqa
        try:
            import cx_Oracle as oracle
            _oracle_database_errors = (oracle.DatabaseError,
                                       oracle.InterfaceError,
                                       oracle.OperationalError)
        except ImportError:
            _oracle_database_errors = ()  # noqa

        try:
            self._close_old_connections = symbol_by_name(
                'django.db:close_old_connections',
            )
        except (ImportError, AttributeError):
            self._close_old_connections = None
        self.database_errors = (
            (DatabaseError,) +
            _my_database_errors +
            _pg_database_errors +
            _lite_database_errors +
            _oracle_database_errors
        )
コード例 #5
0
ファイル: django.py プロジェクト: dentafrice/celery
    def __init__(self, app):
        self.app = app
        self.db_reuse_max = self.app.conf.get('CELERY_DB_REUSE_MAX', None)
        self._db = import_module('django.db')
        self._cache = import_module('django.core.cache')
        self._settings = symbol_by_name('django.conf:settings')

        try:
            self.interface_errors = (
                symbol_by_name('django.db.utils.InterfaceError'),
            )
        except (ImportError, AttributeError):
            self._interface_errors = ()

        # Database-related exceptions.
        DatabaseError = symbol_by_name('django.db:DatabaseError')
        try:
            import MySQLdb as mysql
            _my_database_errors = (mysql.DatabaseError,
                                   mysql.InterfaceError,
                                   mysql.OperationalError)
        except ImportError:
            _my_database_errors = ()      # noqa
        try:
            import psycopg2 as pg
            _pg_database_errors = (pg.DatabaseError,
                                   pg.InterfaceError,
                                   pg.OperationalError)
        except ImportError:
            _pg_database_errors = ()      # noqa
        try:
            import sqlite3
            _lite_database_errors = (sqlite3.DatabaseError,
                                     sqlite3.InterfaceError,
                                     sqlite3.OperationalError)
        except ImportError:
            _lite_database_errors = ()    # noqa
        try:
            import cx_Oracle as oracle
            _oracle_database_errors = (oracle.DatabaseError,
                                       oracle.InterfaceError,
                                       oracle.OperationalError)
        except ImportError:
            _oracle_database_errors = ()  # noqa

        try:
            self._close_old_connections = symbol_by_name(
                'django.db:close_old_connections',
            )
        except (ImportError, AttributeError):
            self._close_old_connections = None
        self.database_errors = (
            (DatabaseError,) +
            _my_database_errors +
            _pg_database_errors +
            _lite_database_errors +
            _oracle_database_errors
        )
コード例 #6
0
 def _firstpass(self, steps):
     for step in values(steps):
         step.requires = [symbol_by_name(dep) for dep in step.requires]
     stream = deque(step.requires for step in values(steps))
     while stream:
         for node in stream.popleft():
             node = symbol_by_name(node)
             if node.name not in self.steps:
                 steps[node.name] = node
             stream.append(node.requires)
コード例 #7
0
ファイル: bootsteps.py プロジェクト: CheeseL0ver/celery
 def _firstpass(self, steps):
     for step in values(steps):
         step.requires = [symbol_by_name(dep) for dep in step.requires]
     stream = deque(step.requires for step in values(steps))
     while stream:
         for node in stream.popleft():
             node = symbol_by_name(node)
             if node.name not in self.steps:
                 steps[node.name] = node
             stream.append(node.requires)
コード例 #8
0
ファイル: utils.py プロジェクト: DjangoBD/django-celery-rpc
def symbol_by_name(name):
    """ Get symbol by qualified name.
    """
    try:
        return utils.symbol_by_name(name)
    except:
        pass

    if ':' in name:
        name = name.replace(':', '.')
    attrs = name.split('.')
    base_module = utils.symbol_by_name(attrs.pop(0))
    return reduce(getattr, attrs, base_module)
コード例 #9
0
ファイル: utils.py プロジェクト: yonglehou/django-celery-rpc
def symbol_by_name(name):
    """ Get symbol by qualified name.
    """
    try:
        return utils.symbol_by_name(name)
    except:
        pass

    if ':' in name:
        name = name.replace(':', '.')
    attrs = name.split('.')
    base_module = utils.symbol_by_name(attrs.pop(0))
    return reduce(getattr, attrs, base_module)
コード例 #10
0
 def _import_function(func_name):
     """ Import class by full name, check type and return.
     """
     sym = symbol_by_name(func_name)
     if hasattr(sym, '__call__'):
         return sym
     raise TypeError("Symbol '{}' is not a function".format(func_name))
コード例 #11
0
ファイル: tasks.py プロジェクト: robotice/robotice
def compare_data(config):
    """
    Core task that runs every 1-60 seconds
    """

    logger = compare_data.get_logger()

    now = time()

    logger.info('Compare data started {0}'.format(now))

    results = []

    for alias, comparator_path in config.COMPARATOR_ALIASES.iteritems():
        
        # inicialize comparator
        try:
            comparator_cls = symbol_by_name(comparator_path)
            comparator = comparator_cls(config)
        except Exception, e:
            logger.warning('Initialize comparator {0} was failed {1}, next processing will be skipped.'.format(comparator_path, e))

        if comparator:
            # process compare
            try:
                compare_results = comparator.compare()
                results.append(compare_results)
                logger.info("Results {0} from {1} comparator".format(compare_results, alias))
            except Exception, e:
                logger.error('Process comparator({0}) compare was failed {1}'.format(comparator_path, e))
コード例 #12
0
ファイル: conf.py プロジェクト: robotice/robotice
 def db(self):
     """only alias for db
     """
     try:
         self.db_backend_cls = symbol_by_name(BACKEND_ALIASES[self.db_backend_name])
     except Exception, e:
         raise e
コード例 #13
0
def is_database_scheduler(scheduler):
    """Return true if Celery is configured to use the db scheduler."""
    if not scheduler:
        return False
    from kombu.utils import symbol_by_name
    from .schedulers import DatabaseScheduler
    return issubclass(symbol_by_name(scheduler), DatabaseScheduler)
コード例 #14
0
def instantiate(name, *args, **kwargs):
    """Instantiate class by name.

    See :func:`symbol_by_name`.

    """
    return symbol_by_name(name)(*args, **kwargs)
コード例 #15
0
 def _import_function(func_name):
     """ Import class by full name, check type and return.
     """
     sym = symbol_by_name(func_name)
     if hasattr(sym, '__call__'):
         return sym
     raise TypeError("Symbol '{}' is not a function".format(func_name))
コード例 #16
0
 def _import_model(model_name):
     """ Import class by full name, check type and return.
     """
     sym = symbol_by_name(model_name)
     if inspect.isclass(sym) and issubclass(sym, Model):
         return sym
     raise TypeError(
         "Symbol '{}' is not a Django model".format(model_name))
コード例 #17
0
 def _import_serializer(serializer_name):
     """ Import class by full name, check type and return.
     """
     sym = symbol_by_name(serializer_name)
     if inspect.isclass(sym) and issubclass(sym, ModelSerializer):
         return sym
     raise TypeError(
         "Symbol '{}' is not a DRF serializer".format(serializer_name))
コード例 #18
0
 def _import_model(model_name):
     """ Import class by full name, check type and return.
     """
     sym = symbol_by_name(model_name)
     if inspect.isclass(sym) and issubclass(sym, Model):
         return sym
     raise TypeError(
         "Symbol '{}' is not a Django model".format(model_name))
コード例 #19
0
 def _import_serializer(serializer_name):
     """ Import class by full name, check type and return.
     """
     sym = symbol_by_name(serializer_name)
     if inspect.isclass(sym) and issubclass(sym, ModelSerializer):
         return sym
     raise TypeError(
         "Symbol '{}' is not a DRF serializer".format(serializer_name))
コード例 #20
0
ファイル: utils.py プロジェクト: celery/django-celery-beat
def is_database_scheduler(scheduler):
    """Return true if Celery is configured to use the db scheduler."""
    if not scheduler:
        return False
    from kombu.utils import symbol_by_name
    from .schedulers import DatabaseScheduler
    return (
        scheduler == 'django'
        or issubclass(symbol_by_name(scheduler), DatabaseScheduler)
    )
コード例 #21
0
    def install(self):
        # Need to add project directory to path
        sys.path.append(os.getcwd())

        self._settings = symbol_by_name('django.conf:settings')
        self.app.loader.now = self.now

        signals.import_modules.connect(self.on_import_modules)
        signals.worker_init.connect(self.on_worker_init)
        return self
コード例 #22
0
ファイル: bootsteps.py プロジェクト: alesasnouski/celery
 def _firstpass(self, steps):
     stream = deque(step.requires for step in steps.itervalues())
     while stream:
         for node in stream.popleft():
             node = symbol_by_name(node)
             if node.name not in self.steps:
                 steps[node.name] = node
             stream.append(node.requires)
     # Make sure we have all the steps
     assert [steps[req.name] for step in steps.values()
                 for req in step.requires]
コード例 #23
0
ファイル: __init__.py プロジェクト: romand/kombu
def resolve_transport(transport=None):
    if isinstance(transport, string_t):
        try:
            transport = TRANSPORT_ALIASES[transport]
        except KeyError:
            if '.' not in transport and ':' not in transport:
                raise KeyError('No such transport: {0}'.format(transport))
        else:
            if isinstance(transport, Callable):
                transport = transport()
        return symbol_by_name(transport)
    return transport
コード例 #24
0
ファイル: __init__.py プロジェクト: adityar7/kombu
def resolve_transport(transport=None):
    if isinstance(transport, string_t):
        try:
            transport = TRANSPORT_ALIASES[transport]
        except KeyError:
            if '.' not in transport and ':' not in transport:
                raise KeyError('No such transport: {0}'.format(transport))
        else:
            if isinstance(transport, Callable):
                transport = transport()
        return symbol_by_name(transport)
    return transport
コード例 #25
0
ファイル: __init__.py プロジェクト: osamu0329nakamura/kombu
def resolve_transport(transport=None):
    if isinstance(transport, basestring):
        try:
            transport = TRANSPORT_ALIASES[transport]
        except KeyError:
            if '.' not in transport and ':' not in transport:
                raise KeyError('No such transport: %s' % transport)
        else:
            if callable(transport):
                transport = transport()
        return symbol_by_name(transport)
    return transport
コード例 #26
0
ファイル: __init__.py プロジェクト: WYANG008/crawler
def resolve_transport(transport=None):
    if isinstance(transport, basestring):
        try:
            transport = TRANSPORT_ALIASES[transport]
        except KeyError:
            if '.' not in transport and ':' not in transport:
                raise KeyError('No such transport: %s' % transport)
        else:
            if callable(transport):
                transport = transport()
        return symbol_by_name(transport)
    return transport
コード例 #27
0
ファイル: agents.py プロジェクト: adamchainz/cell
        def spawn(self, cls, id, kwargs={}):
            """Add actor to the registry and start the actor's main method."""
            try:
                actor = symbol_by_name(cls)(
                    connection=self.connection, id=id, **kwargs)

                if actor.id in self.registry:
                    warn('Actor id %r already exists', actor.id)
                self._start_actor_consumer(actor)
                debug('Actor registered: %s', cls)
                return actor.id
            except Exception as exc:
                error('Cannot start actor: %r', exc, exc_info=True)
コード例 #28
0
ファイル: agents.py プロジェクト: yutiansut/cell
        def spawn(self, cls, id, kwargs={}):
            """Add actor to the registry and start the actor's main method."""
            try:
                actor = symbol_by_name(cls)(connection=self.connection,
                                            id=id,
                                            **kwargs)

                if actor.id in self.registry:
                    warn('Actor id %r already exists', actor.id)
                self._start_actor_consumer(actor)
                debug('Actor registered: %s', cls)
                return actor.id
            except Exception as exc:
                error('Cannot start actor: %r', exc, exc_info=True)
コード例 #29
0
def resolve_transport(transport=None):
    if isinstance(transport, basestring):
        try:
            transport = TRANSPORT_ALIASES[transport]
        except KeyError:
            if '.' not in transport and ':' not in transport:
                from kombu.utils.text import fmatch_best
                alt = fmatch_best(transport, TRANSPORT_ALIASES)
                if alt:
                    raise KeyError('No such transport: %s.  Did you mean %s?' %
                                   (transport, alt))
                raise KeyError('No such transport: %s' % transport)
        else:
            if callable(transport):
                transport = transport()
        return symbol_by_name(transport)
    return transport
コード例 #30
0
ファイル: __init__.py プロジェクト: Elastica/kombu
def resolve_transport(transport=None):
    if isinstance(transport, string_t):
        try:
            transport = TRANSPORT_ALIASES[transport]
        except KeyError:
            if '.' not in transport and ':' not in transport:
                from kombu.utils.text import fmatch_best
                alt = fmatch_best(transport, TRANSPORT_ALIASES)
                if alt:
                    raise KeyError(
                        'No such transport: {0}.  Did you mean {1}?'.format(
                            transport, alt))
                raise KeyError('No such transport: {0}'.format(transport))
        else:
            if callable(transport):
                transport = transport()
        return symbol_by_name(transport)
    return transport
コード例 #31
0
def get_base_task_class(base_task_name):
    """ Provide base task for actual tasks

    Load custom base task if overrides are in config or return default base task.

    :param base_task_name: name of default base task in this module
    :return: base celery task class
    """
    base_task = globals().get(base_task_name)
    custom_task_name = config.OVERRIDE_BASE_TASKS.get(base_task_name)
    if not custom_task_name:
        return base_task
    sym = symbol_by_name(custom_task_name)
    if inspect.isclass(sym) and issubclass(sym, base_task):
        return sym
    raise TypeError(
        "Symbol '{}' has not a base ".format(custom_task_name,
                                             base_task.__name__))
コード例 #32
0
 def test_imp_reraises_ValueError(self):
     imp = Mock()
     imp.side_effect = ValueError()
     with self.assertRaises(ValueError):
         utils.symbol_by_name('kombu.Connection', imp=imp)
コード例 #33
0
 def test_no_default(self):
     with self.assertRaises(ImportError):
         utils.symbol_by_name('xyz.ryx.qedoa.weq:foz')
コード例 #34
0
ファイル: django.py プロジェクト: dentafrice/celery
 def _now(self):
     try:
         return symbol_by_name('django.utils.timezone:now')
     except (AttributeError, ImportError):  # pre django-1.4
         return datetime.now
コード例 #35
0
ファイル: bootsteps.py プロジェクト: CheeseL0ver/celery
 def load_step(self, step):
     step = symbol_by_name(step)
     return step.name, step
コード例 #36
0
 def load_step(self, step):
     step = symbol_by_name(step)
     return step.name, step
コード例 #37
0
 def _now(self):
     try:
         return symbol_by_name('django.utils.timezone:now')
     except (AttributeError, ImportError):  # pre django-1.4
         return datetime.now
コード例 #38
0
ファイル: test_utils.py プロジェクト: FluidInc/8b-kombu
 def test_returns_default(self):
     default = object()
     self.assertIs(
         utils.symbol_by_name('xyz.ryx.qedoa.weq:foz', default=default),
         default,
     )
コード例 #39
0
ファイル: test_utils.py プロジェクト: FluidInc/8b-kombu
 def test_instance_returns_instance(self):
     instance = object()
     self.assertIs(utils.symbol_by_name(instance), instance)
コード例 #40
0
ファイル: utils.py プロジェクト: tuenti/django-celery
def is_database_scheduler(scheduler):
    if not scheduler:
        return False
    from kombu.utils import symbol_by_name
    from .schedulers import DatabaseScheduler
    return issubclass(symbol_by_name(scheduler), DatabaseScheduler)
コード例 #41
0
ファイル: report.py プロジェクト: sarkartanzil/schooltool
 def factory(self):
     result = symbol_by_name(self.factory_name)
     return result
コード例 #42
0
class UnitLogging(symbol_by_name(Celery.log_cls)):
    def __init__(self, *args, **kwargs):
        super(UnitLogging, self).__init__(*args, **kwargs)
        self.already_setup = True
コード例 #43
0
 def Queue(self):
     return symbol_by_name(self.queue_model)
コード例 #44
0
ファイル: templates.py プロジェクト: andrewkittredge/celery
def mixin_template(template, conf):
    cls = symbol_by_name(templates[template])
    conf.update(dict(
        (k, v) for k, v in items(vars(cls))
        if k.isupper() and not k.startswith('_')
    ))
コード例 #45
0
ファイル: __init__.py プロジェクト: Artur30/OnlineStore
def get_implementation(cls):
    return symbol_by_name(cls, ALIASES)
コード例 #46
0
 def _mail_admins(self):
     return symbol_by_name('django.core.mail:mail_admins')
コード例 #47
0
ファイル: test_utils.py プロジェクト: FluidInc/8b-kombu
 def test_no_default(self):
     with self.assertRaises(ImportError):
         utils.symbol_by_name('xyz.ryx.qedoa.weq:foz')
コード例 #48
0
ファイル: utils.py プロジェクト: Baiker000/NekoSleep
def is_database_scheduler(scheduler):
    if not scheduler:
        return False
    from kombu.utils import symbol_by_name
    from .schedulers import DatabaseScheduler
    return issubclass(symbol_by_name(scheduler), DatabaseScheduler)
コード例 #49
0
ファイル: test_utils.py プロジェクト: FluidInc/8b-kombu
 def test_imp_reraises_ValueError(self):
     imp = Mock()
     imp.side_effect = ValueError()
     with self.assertRaises(ValueError):
         utils.symbol_by_name('kombu.Connection', imp=imp)
コード例 #50
0
ファイル: __init__.py プロジェクト: Elastica/kombu
 def Queue(self):
     return symbol_by_name(self.queue_model)
コード例 #51
0
 def test_instance_returns_instance(self):
     instance = object()
     self.assertIs(utils.symbol_by_name(instance), instance)
コード例 #52
0
ファイル: django.py プロジェクト: dentafrice/celery
 def _mail_admins(self):
     return symbol_by_name('django.core.mail:mail_admins')
コード例 #53
0
 def test_returns_default(self):
     default = object()
     self.assertIs(
         utils.symbol_by_name('xyz.ryx.qedoa.weq:foz', default=default),
         default,
     )
コード例 #54
0
ファイル: actors.py プロジェクト: yutiansut/cell
 def __init__(self, name, id, async_start_result=None, **kwargs):
     kwargs.update({'id': id})
     self._actor = symbol_by_name(name)(**kwargs)
     self.id = self._actor.id
     self.async_start_result = async_start_result
コード例 #55
0
ファイル: templates.py プロジェクト: skizhak/celery
def mixin_template(template, conf):
    cls = symbol_by_name(templates[template])
    conf.update(
        dict((k, v) for k, v in items(vars(cls))
             if k.isupper() and not k.startswith('_')))