- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在使用 Celery 和 Redis 时遇到问题。出于某种原因,Celery 无法连接到远程 Redis 服务器。我已经阅读了这里的 celery +redis帖子,但还没有找到解决方案。
到目前为止,我已经尝试了以下方法:
redis.conf
中删除绑定(bind)并重新启动服务器celeryconfig.py
文件中指定的正确设置。BROKER_TRANSPORT
已设置为 'redis'
celery.broker_connection().as_uri()
方法验证我的配置文件正在加载redis-cli -h w2214.area1.company.com:6379
连接到我的 redis 服务器并且 redis ping
命令返回 +PONG
telnet w2214.area1.company.com 6379
但是当我运行我的工作脚本时我仍然遇到连接失败 111 并且我很困惑。这是回溯。我已经替换了下面显示的 URL 中的公司名称,以保护我工作的公司的隐私。
initializing celery
celery.broker_connection() = redis://w2214.area1.company.com:6379/0
BROKER_URL: redis://w2214.area1.company.com:6379/0
CELERY_RESULT_BACKEND: redis://w2214.area1.company.com:6379/0
Traceback (most recent call last):
File "test_worker_standalone.py", line 66, in <module>
result = tasks.get_schema.apply_async((), queue=options.queue)
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/celery/app/task.py", line 474, in apply_async
**options)
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/celery/app/amqp.py", line 250, in publish_task
**kwargs
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/kombu/messaging.py", line 164, in publish
routing_key, mandatory, immediate, exchange, declare)
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/kombu/connection.py", line 470, in _ensured
interval_max)
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/kombu/connection.py", line 396, in ensure_connection
interval_start, interval_step, interval_max, callback)
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/kombu/utils/__init__.py", line 217, in retry_over_time
return fun(*args, **kwargs)
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/kombu/connection.py", line 246, in connect
return self.connection
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/kombu/connection.py", line 761, in connection
self._connection = self._establish_connection()
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/kombu/connection.py", line 720, in _establish_connection
conn = self.transport.establish_connection()
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/kombu/transport/virtual/__init__.py", line 742, in establish_connection
self._avail_channels.append(self.create_channel(self))
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/kombu/transport/virtual/__init__.py", line 725, in create_channel
channel = self.Channel(connection)
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/kombu/transport/redis.py", line 365, in __init__
self.client.info()
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/redis/client.py", line 480, in info
return self.execute_command('INFO')
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/redis/client.py", line 397, in execute_command
connection.send_command(*args)
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/redis/connection.py", line 306, in send_command
self.send_packed_command(self.pack_command(*args))
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/redis/connection.py", line 288, in send_packed_command
self.connect()
File "/nfs/site/home/rodney/projects/mos-env/lib/python2.7/site-packages/redis/connection.py", line 235, in connect
raise ConnectionError(self._error_message(e))
redis.exceptions.ConnectionError: Error 111 connecting localhost:6379. Connection refused.
最后,我使用了以下软件版本:
amqp (1.0.13)
anyjson (0.3.3)
autoenv (1.0.0)
billiard (2.7.3.34)
celery (3.0.24)
celery-with-redis (3.0)
Cython (0.19.1)
distribute (0.7.3)
Django (1.5.1)
kombu (2.5.16)
pbr (0.5.21)
pip (1.4.1)
python-dateutil (2.2)
redis (2.8.0)
setuptools (0.9.8)
six (1.4.1)
stevedore (0.12)
virtualenv (1.10.1)
virtualenv-clone (0.2.4)
virtualenvwrapper (4.1.1)
wsgiref (0.1.2)
而我的redis版本是:Redis server v=2.6.16
我注意到一件有趣的事情,我不确定它是否相关,但回溯显示以下错误,即使我指定了要使用的远程服务器:
Error 111 connecting localhost:6379. Connection refused.
感谢您抽出宝贵时间以及您能给我的任何帮助。
更新:我修改了 redis 库 Connection
对象的 __init__() (redis/connecton.py:211)
并硬编码了我的 redis 服务器的主机名和一切正常。因此,我将继续尝试确定为什么 Connection 对象没有收到我在 Celery 中指定的主机名。
更新 #2:这里是我的 Celery 设置 (celeryconfig.py):
BROKER_TRANSPORT = 'redis'
CELERY_BROKER_URL = 'redis://w2214.area1.company.com:6379/0'
CELERY_RESULT_BACKEND = 'redis://w2214.area1.company.com:6379/0'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'America/Chicago'
CELERY_ENABLE_UTC = True
CELERYD_LOG_COLOR = False
CELERY_IMPORTS = ("tasks", )
CELERY_TASK_RESULT_EXPIRES = 300
我的 redis.conf 设置是默认设置,删除了 'bind'
语句。
最佳答案
如果您在本地主机上遇到此问题,请尝试通过以下方式安装 redis-server
sudo apt install redis-server
然后再尝试连接
关于python - celery 无法连接到远程redis服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19804058/
当我运行此命令进行 celery 节拍时。 [2013-06-27 02:17:05,936: INFO/MainProcess] Celerybeat: Starting... [2013-06-2
我需要构建一个处理两种类型任务的系统。一种类型可以创建更多自身或另一种类型的任务。将有很少的 worker (2-3)和只有一个主机。最重要的要求是系统应该优雅地处理重新启动:即在重新启动时,正在进行
我们使用 Celery 4.2.1 和 Redis,并为我们的任务设置了全局软超时和硬超时。我们所有的自定义任务都设计为保持在限制范围内,但每天内置任务 backend_cleanup 任务最终都会因
我知道这违背了使用 Celery 的全部目的,但是是否有一个函数会阻塞直到结果返回? 所以我可以调用 actual_result = MyTask.dont_delay(some_arg="foo")
我们使用 Celery 4.2.1 和 Redis,并为我们的任务设置了全局软超时和硬超时。我们所有的自定义任务都设计为保持在限制范围内,但每天内置任务 backend_cleanup 任务最终都会因
我知道这违背了使用 Celery 的全部目的,但是是否有一个函数会阻塞直到结果返回? 所以我可以调用 actual_result = MyTask.dont_delay(some_arg="foo")
我计划使用 celery 作为我的项目的任务管理组件。它几乎具有我的项目所需的所有功能。我将有一组可以独立执行或按指定顺序执行的任务。在顺序任务中,我希望能够在中间任务之一失败时执行清理/回滚。我想知
它是运行 Celery 的实际处理器还是另一个进程?在花中,我可以在工作池中看到多个进程吗?这两者之间有什么区别? 最佳答案 当您运行 celery worker 时,它会创建一个父进程来管理正在运行
我有一个名为 ShippingApp 的项目,我按照步骤设置了 celery worker。我将 celery 3.1.26.post2 与 python3.7 一起使用,当我想启动 Celery W
尽我所能,我无法杀死这些 celery worker 。 我跑: celery --app=my_app._celery:app status 我看到我有3个(我不明白为什么3个 worker = 2
我在 docker 容器中运行了 celery ,我想检查选项 CELERY_TASK_RESULT_EXPIRES = '3600' 是否已应用。 我尝试使用 celery inspect conf
我使用 celery.chord(...) 创建一组任务和一个方法,该方法在组中的所有任务完成后被调用。 我使用 amqp 结果后端(但我想切换到 memcached)。 我的 worker 每秒钟一
我正在寻找一些关于将任务生成的列表映射到 celery 中的另一个任务的最佳方法的建议。 假设我有一个名为 parse 的任务,它解析 PDF 文档并输出页面列表。然后,每个页面都需要单独传递给另一个
这不是关于如何捕获 celery worker 日志的问题。有什么方法可以捕获生产者上的 celery 日志记录。我想要的是捕获当我调用 task.delay(...) 或 task.apply_as
我正在使用以下版本: 花==0.9.3 celery ==4.3.0 这为我提供了包含多个列的任务页面的以下显示: 每次我进入这个页面时,我最终都会重新排列页面,使列的顺序不同,并将行的顺序更改为降序
我想完成这样的事情: results = [] for i in range(N): data = generate_data_slowly() res = tasks.process
我想运行一个由beat 调度的复杂任务。让我们假设定义了默认的 add/mul 任务。 @app.on_after_configure.connect def setup_periodic_tasks
我有一个应用程序,其中包含 celery worker 。当我部署这将杀死那些正在运行的进程。 所以任务将开始,但永远不会完成,并且在部署完成时不会重新启动。 避免此问题并在部署完成后重新启动这些任务
我正在开始使用 Celery 进行 Django 项目。出于本地开发目的,我根据这些说明使用 djcelery 和 djkombu(数据库传输)进行了设置 http://ask.github.com/
如何配置 celery 在任务失败时发送电子邮件警报? 例如,我希望 Celery 在 3 个以上的任务失败或 10 个以上的任务被重试时通知我。 是否可以使用 celery 或实用程序(例如花),或
我是一名优秀的程序员,十分优秀!