gpt4 book ai didi

python - celery .delay 挂起(最近,不是授权问题)

转载 作者:太空狗 更新时间:2023-10-30 01:03:40 41 4
gpt4 key购买 nike

我正在运行 Celery 2.2.4/djCelery 2.2.4,使用 RabbitMQ 2.1.1 作为后端。我最近将两个新的 celery 服务器上线——我在两台机器上运行 2 个 worker,总共有 18 个线程,在我新的增强型机器(36g RAM + 双超线程四核)上,我运行 10每个 worker 有 8 个线程,总共有 180 个线程——我的任务都很小,所以这应该没问题。

过去几天节点一直运行良好,但今天我注意到 .delaay() 挂了。当我中断它时,我看到一个指向此处的回溯:

File "/home/django/deployed/releases/20110608183345/virtual-env/lib/python2.5/site-packages/celery/task/base.py", line 324, in delay
return self.apply_async(args, kwargs)
File "/home/django/deployed/releases/20110608183345/virtual-env/lib/python2.5/site-packages/celery/task/base.py", line 449, in apply_async
publish.close()
File "/home/django/deployed/virtual-env/lib/python2.5/site-packages/kombu/compat.py", line 108, in close
self.backend.close()
File "/home/django/deployed/virtual-env/lib/python2.5/site-packages/amqplib/client_0_8/channel.py", line 194, in close
(20, 41), # Channel.close_ok
File "/home/django/deployed/virtual-env/lib/python2.5/site-packages/amqplib/client_0_8/abstract_channel.py", line 89, in wait
self.channel_id, allowed_methods)
File "/home/django/deployed/virtual-env/lib/python2.5/site-packages/amqplib/client_0_8/connection.py", line 198, in _wait_method
self.method_reader.read_method()
File "/home/django/deployed/virtual-env/lib/python2.5/site-packages/amqplib/client_0_8/method_framing.py", line 212, in read_method
self._next_method()
File "/home/django/deployed/virtual-env/lib/python2.5/site-packages/amqplib/client_0_8/method_framing.py", line 127, in _next_method
frame_type, channel, payload = self.source.read_frame()
File "/home/django/deployed/virtual-env/lib/python2.5/site-packages/amqplib/client_0_8/transport.py", line 109, in read_frame
frame_type, channel, size = unpack('>BHI', self._read(7))
File "/home/django/deployed/virtual-env/lib/python2.5/site-packages/amqplib/client_0_8/transport.py", line 200, in _read
s = self.sock.recv(65536)

我检查了 Rabbit 日志,我看到尝试连接的过程如下:

=INFO REPORT==== 12-Jun-2011::22:58:12 ===
accepted TCP connection on 0.0.0.0:5672 from x.x.x.x:48569

我将我的 Celery 日志级别设置为 INFO,但我在 Celery 日志中没有看到任何特别有趣的内容,除了 2 个工作人员无法连接到代理:

[2011-06-12 22:41:08,033: ERROR/MainProcess] Consumer: Connection to broker lost. Trying to re-establish connection...

所有其他节点都能够毫无问题地连接。

我知道去年有一个类似性质的帖子 ( RabbitMQ / Celery with Django hangs on delay/ready/etc - No useful log info ),但我很确定这是不同的。难道是大量的 worker 在 amqplib 中造成了某种竞争条件——我发现了 this thread 这似乎表明 amqplib 不是线程安全的,不确定这对 Celery 是否重要。

编辑:我已经在两个节点上尝试了 celeryctl purge——在一个节点上它成功了,但在另一个节点上失败并出现以下 AMQP 错误:

AMQPConnectionException(reply_code, reply_text, (class_id, method_id))
amqplib.client_0_8.exceptions.AMQPConnectionException:
(530, u"NOT_ALLOWED - cannot redeclare exchange 'XXXXX' in vhost 'XXXXX'
with different type, durable or autodelete value", (40, 10), 'Channel.exchange_declare')

在两个节点上,inspect stats 挂起并显示上面的“无法关闭连接”回溯。我在这里不知所措。

EDIT2: 我能够使用 camqadm 中的 exchange.delete 删除有问题的交换,现在第二个节点也挂了 :(。

EDIT3:最近也发生了变化的一件事是我向 rabbitmq 添加了一个额外的虚拟主机,我的暂存节点连接到它。

最佳答案

希望这会节省很多人的时间……虽然它肯定不会让我感到尴尬:

/var 在运行 rabbit 的服务器上已满。对于我添加的所有节点,rabbit 进行了更多的日志记录,它填满了 /var——我无法写入 /var/lib/rabbitmq ,因此没有消息通过。

关于python - celery .delay 挂起(最近,不是授权问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6326226/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com