Celery Received unregistered task of type (run example)

后端 未结 30 1861
旧时难觅i
旧时难觅i 2020-11-28 04:42

I\'m trying to run example from Celery documentation.

I run: celeryd --loglevel=INFO

/usr/local/lib/python2.7/dist-packages/celery/loade         


        
30条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-11-28 05:14

    If you use autodiscover_tasks, make sure that your functions to be registered stay in the tasks.py, not any other file. Or celery can not find the functions you want to register.

    Use app.register_task will also do the job, but seems a little naive.

    Please refer to this official specification of autodiscover_tasks.

    def autodiscover_tasks(self, packages=None, related_name='tasks', force=False):
        """Auto-discover task modules.
    
        Searches a list of packages for a "tasks.py" module (or use
        related_name argument).
    
        If the name is empty, this will be delegated to fix-ups (e.g., Django).
    
        For example if you have a directory layout like this:
    
        .. code-block:: text
    
            foo/__init__.py
               tasks.py
               models.py
    
            bar/__init__.py
                tasks.py
                models.py
    
            baz/__init__.py
                models.py
    
        Then calling ``app.autodiscover_tasks(['foo', bar', 'baz'])`` will
        result in the modules ``foo.tasks`` and ``bar.tasks`` being imported.
    
        Arguments:
            packages (List[str]): List of packages to search.
                This argument may also be a callable, in which case the
                value returned is used (for lazy evaluation).
            related_name (str): The name of the module to find.  Defaults
                to "tasks": meaning "look for 'module.tasks' for every
                module in ``packages``."
            force (bool): By default this call is lazy so that the actual
                auto-discovery won't happen until an application imports
                the default modules.  Forcing will cause the auto-discovery
                to happen immediately.
        """
    

提交回复
热议问题