I followed the official [Celery guide](https://docs.celeryproject.org/en/stable/getting-started/next-steps.html#in-the-background) to learn, everything works well when using `celery -A proj worker -l info` to start the worker, however , if I run the worker in the background using `celery multi restart w1 -A proj -l info --logfile=./celery.log`, then I got
>>> from proj.tasks import add >>> add.delay().get(timeout=19) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.8/dist-packages/celery/result.py", line 230, in get return self.backend.wait_for_pending( File "/usr/local/lib/python3.8/dist-packages/celery/backends/base.py", line 660, in wait_for_pending meta = self.wait_for( File "/usr/local/lib/python3.8/dist-packages/celery/backends/base.py", line 696, in wait_for raise TimeoutError('The operation timed out.') celery.exceptions.TimeoutError: The operation timed out. >>> So what's wrong ? Test environment : - Python 3.8.2 - celery multi v4.4.7 - rabbitmqctl version ---> 3.8.2 and Project layout ([code files](https://github.com/celery/celery/files/5231502/proj.zip)): > proj/__init__.py > /celery.py > /tasks.py celery.py from __future__ import absolute_import, unicode_literals from celery import Celery app = Celery('proj', broker='amqp://localhost', # backend='db+sqlite:///results.sqlite', # The backend argument, If you don’t need results, it’s better to disable them. Results can also be disabled for individual tasks by setting the @task(ignore_result=True) option. include=['proj.tasks']) # The include argument is a list of modules to import when the worker starts. You need to add our tasks module here so that the worker is able to find our tasks. app.conf.CELERY_RESULT_BACKEND = 'db+sqlite:///results.sqlite' if __name__ == '__main__': app.start() tasks.py from __future__ import absolute_import, unicode_literals from .celery import app import datetime @app.task def add(): return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") The log info as the following , I googled , but didn't find a working solutions ``` [2020-09-15 22:10:03,229: INFO/MainProcess] Connected to amqp://guest:**@127.0.0.1:5672// [2020-09-15 22:10:03,238: INFO/MainProcess] mingle: searching for neighbors [2020-09-15 22:10:04,260: INFO/MainProcess] mingle: all alone [2020-09-15 22:10:04,273: INFO/MainProcess] w1@iZwz962a07bhoio77q4ewxZ ready. [2020-09-15 22:10:10,625: ERROR/MainProcess] Received unregistered task of type 'proj.tasks.add'. The message has been ignored and discarded. Did you remember to import the module containing this task? Or maybe you're using relative imports? Please see http://docs.celeryq.org/en/latest/internals/protocol.html for more information. The full contents of the message body was: '[[], {}, {"callbacks": null, "errbacks": null, "chain": null, "chord": null}]' (77b) Traceback (most recent call last): File "/usr/local/lib/python3.8/dist-packages/celery/worker/consumer/consumer.py", line 562, in on_task_received strategy = strategies[type_] KeyError: 'proj.tasks.add' ``` -- https://mail.python.org/mailman/listinfo/python-list