Reputation: 1
I'm building a Websocket service in Django, and I chose celery to push messages。But when I run celery using eventlet
on the online server, the following error occurred:
Traceback (most recent call last):
File "/usr/local/bin/celery", line 8, in <module>
sys.exit(main())
^^^^^^
File "/usr/local/lib/python3.12/site-packages/celery/__main__.py", line 15, in main
sys.exit(_main())
^^^^^^^
File "/usr/local/lib/python3.12/site-packages/celery/bin/celery.py", line 236, in main
return celery(auto_envvar_prefix="CELERY")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/click/decorators.py", line 33, in new_func
return f(get_current_context(), *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/celery/bin/base.py", line 134, in caller
return f(ctx, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/celery/bin/worker.py", line 348, in worker
worker = app.Worker(
^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/celery/worker/worker.py", line 93, in __init__
self.app.loader.init_worker()
File "/usr/local/lib/python3.12/site-packages/celery/loaders/base.py", line 110, in init_worker
self.import_default_modules()
File "/usr/local/lib/python3.12/site-packages/celery/loaders/base.py", line 104, in import_default_modules
raise response
File "/usr/local/lib/python3.12/site-packages/celery/utils/dispatch/signal.py", line 276, in send
response = receiver(signal=self, sender=sender, **named)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/celery/fixups/django.py", line 97, in on_import_modules
self.worker_fixup.validate_models()
File "/usr/local/lib/python3.12/site-packages/celery/fixups/django.py", line 135, in validate_models
self.django_setup()
File "/usr/local/lib/python3.12/site-packages/celery/fixups/django.py", line 131, in django_setup
django.setup()
File "/usr/local/lib/python3.12/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/usr/local/lib/python3.12/site-packages/django/apps/registry.py", line 124, in populate
app_config.ready()
File "/var/IBMS/NewServer/function/apps.py", line 22, in ready
active_tasks = i.active()
^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/celery/app/control.py", line 149, in active
return self._request('active', safe=safe)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/celery/app/control.py", line 106, in _request
return self._prepare(self.app.control.broadcast(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/celery/app/control.py", line 776, in broadcast
return self.mailbox(conn)._broadcast(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/kombu/pidbox.py", line 330, in _broadcast
chan = channel or self.connection.default_channel
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/kombu/connection.py", line 953, in default_channel
self._ensure_connection(**conn_opts)
File "/usr/local/lib/python3.12/site-packages/kombu/connection.py", line 458, in _ensure_connection
with ctx():
File "/usr/local/lib/python3.12/contextlib.py", line 158, in __exit__
self.gen.throw(value)
File "/usr/local/lib/python3.12/site-packages/kombu/connection.py", line 476, in _reraise_as_library_errors
raise ConnectionError(str(exc)) from exc
kombu.exceptions.OperationalError: Error -3 connecting to redis:6379. Lookup timed out.
docker-compse:
services:
redis:
image: redis:5
command: redis-server /etc/redis/redis.conf
volumes:
- function_redis_vol:/data
- ./compose/redis/redis.conf:/etc/redis/redis.conf
ports:
- "6379:6379"
restart: always
web:
build: .
command: ./start.sh
expose:
- "8000"
volumes:
……
links:
- db
- redis
depends_on:
- db
- redis
environment:
- DEBUG=False
restart: always
tty: true
stdin_open: true
start.sh:
python manage.py runserver 0.0.0.0:8000
celery -A ~ worker -l info -P eventlet -c 20
version:
I tried to run celery in other ways and found that I could connect to redis using threads
or prefork
.
Upvotes: 0
Views: 175