Celery 在我的一个 dotcloud 部署中失败了,我不知道如何修复。该部署几乎与现有的 dotcloud 部署(通过执行文件差异验证)相同,似乎工作正常。
我在 djcelery 日志中得到的错误:
dotcloud@hack-default-www-0:/var/log/supervisor$ 更多 djcelery_error.log
/home/dotcloud/env/lib/python2.6/site-packages/django/conf/__init__.py:75:Depre
阳离子警告:已删除 ADMIN_MEDIA_PREFIX 设置;使用 STATIC_URL 我
相反。
“改用 STATIC_URL。”,弃用警告)
/home/dotcloud/env/lib/python2.6/site-packages/djcelery/loaders.py:108:用户警告
ing:使用 settings.DEBUG 会导致内存泄漏,切勿在 prod 中使用此设置
拍卖环境!
warnings.warn("使用 settings.DEBUG 会导致内存泄漏,永远不要"
[2012-06-04 03:27:32,139: 警告/MainProcess] -------------- celery@hack-defaul
t-www-0 v2.5.3
---- **** -----
- - * *** * - [配置]
-- * - **** --- . 经纪人:amqp://root@hack-OQVADQ2K.dotcloud.com:29210//
- ** ---------- 。加载器:djcelery.loaders.DjangoLoader
- ** ---------- 。日志文件:[stderr]@INFO
- ** ---------- 。并发:2
- ** ---------- 。事件:开
- *** --- * --- 。节拍:关
-- ******* ----
--- ***** ----- [队列]
-------------- 。芹菜:交换:芹菜(直接)绑定:芹菜
[任务]
. Experiments.tasks.pushMessageToIphone
. 实验.tasks.sendTestMessage
[2012-06-04 03:27:32,172:INFO/PoolWorker-1] 子进程调用 self.run()
[2012-06-04 03:27:32,185: INFO/PoolWorker-2] 子进程调用 self.run()
[2012-06-04 03:27:32,188: 警告/MainProcess] celery@hack-default-www-0 有 sta
rt。
[2012-06-04 03:27:35,315:错误/MainProcess] 消费者:连接错误:套接字
关闭。2 秒后重试...
[2012-06-04 03:27:40,374:错误/MainProcess] 消费者:连接错误:套接字
关闭。4 秒后重试...
[2012-06-04 03:27:47,479:错误/MainProcess] 消费者:连接错误:套接字
关闭。请在 6 秒后重试...
[2012-06-04 03:27:56,509:错误/MainProcess] 消费者:连接错误:套接字
有趣的是,celery cam 的错误日志显示了一些不同的东西。我不确定这是否是一个红鲱鱼..
/home/dotcloud/env/lib/python2.6/site-packages/django/conf/__init__.py:75:Depre
阳离子警告:已删除 ADMIN_MEDIA_PREFIX 设置;使用 STATIC_URL 我
相反。
“改用 STATIC_URL。”,弃用警告)
[2012-06-04 03:27:31,373: INFO/MainProcess] -> evcam: 使用 djce 拍摄快照
lery.snapshot.Camera(每 1.0 秒)
回溯(最近一次通话最后):
文件“hack/manage.py”,第 14 行,在
执行管理器(设置)
文件“/home/dotcloud/env/lib/python2.6/site-packages/django/core/management/__
init__.py”,第 459 行,在 execute_manager 中
实用程序.execute()
文件“/home/dotcloud/env/lib/python2.6/site-packages/django/core/management/__
init__.py”,第 382 行,在执行中
self.fetch_command(子命令).run_from_argv(self.argv)
文件“/home/dotcloud/env/lib/python2.6/site-packages/djcelery/management/base.
py",第 74 行,在 run_from_argv
return super(CeleryCommand, self).run_from_argv(argv)
文件“/home/dotcloud/env/lib/python2.6/site-packages/django/core/management/ba
se.py”,第 196 行,在 run_from_argv
self.execute(*args, **options.__dict__)
文件“/home/dotcloud/env/lib/python2.6/site-packages/djcelery/management/base.
py",第 67 行,在执行中
super(CeleryCommand, self).execute(*args, **options)
文件“/home/dotcloud/env/lib/python2.6/site-packages/django/core/management/ba
se.py",第 232 行,在执行中
输出 = self.handle(*args, **options)
文件“/home/dotcloud/env/lib/python2.6/site-packages/djcelery/management/comma
nds/celerycam.py”,第 26 行,在句柄中
ev.run(*args, **options)
文件“/home/dotcloud/env/lib/python2.6/site-packages/celery/bin/celeryev.py”,
第 38 行,运行中
分离=分离)
文件“/home/dotcloud/env/lib/python2.6/site-packages/celery/bin/celeryev.py”,
第 70 行,在 run_evcam 中
返回凸轮()
文件“/home/dotcloud/env/lib/python2.6/site-packages/celery/events/snapshot.py
",第 116 行,在 evcam 中
recv.capture(限制=无)
文件“/home/dotcloud/env/lib/python2.6/site-packages/celery/events/__init__.py
",第 204 行,在捕获中
列表(self.itercapture(限制=限制,超时=超时,唤醒=唤醒))
文件“/home/dotcloud/env/lib/python2.6/site-packages/celery/events/__init__.py
",第 193 行,在迭代捕获中
以 self.consumer(wakeup=wakeup) 作为消费者:
文件“/usr/lib/python2.6/contextlib.py”,第 16 行,在 __enter__
返回 self.gen.next()
文件“/home/dotcloud/env/lib/python2.6/site-packages/celery/events/__init__.py
",第 185 行,在消费者中
queues=[self.queue], no_ack=True)
文件“/home/dotcloud/env/lib/python2.6/site-packages/kombu/messaging.py”,行
279,在__init__
self.revive(self.channel)
文件“/home/dotcloud/env/lib/python2.6/site-packages/kombu/messaging.py”,行
286,复活
频道 = 频道.default_channel
文件“/home/dotcloud/env/lib/python2.6/site-packages/kombu/connection.py”,林
e 581,在 default_channel 中
自连接
文件“/home/dotcloud/env/lib/python2.6/site-packages/kombu/connection.py”,林
e 574,在连接
self._connection = self._建立连接()
文件“/home/dotcloud/env/lib/python2.6/site-packages/kombu/connection.py”,林
e 533,在_建立连接
conn = self.transport.建立连接()
文件“/home/dotcloud/env/lib/python2.6/site-packages/kombu/transport/amqplib.p
y",第 279 行,在建立连接中
connect_timeout=conninfo.connect_timeout)
文件“/home/dotcloud/env/lib/python2.6/site-packages/kombu/transport/amqplib.p
y",第 89 行,在 __init__ 中
super(Connection, self).__init__(*args, **kwargs)
文件“/home/dotcloud/env/lib/python2.6/site-packages/amqplib/client_0_8/connec
tion.py”,第 144 行,在 __init__ 中
(10, 30), # 调
文件“/home/dotcloud/env/lib/python2.6/site-packages/amqplib/client_0_8/abstra
ct_channel.py”,第 95 行,等待中
self.channel_id, allowed_methods)
文件“/home/dotcloud/env/lib/python2.6/site-packages/amqplib/client_0_8/connec
tion.py”,第 202 行,在 _wait_method 中
self.method_reader.read_method()
文件“/home/dotcloud/env/lib/python2.6/site-packages/amqplib/client_0_8/method
_framing.py”,第 221 行,在 read_method 中
提高米
IOError:套接字已关闭
我的主管文件:
[程序:djcelery] 目录 = /home/dotcloud/current/ 命令 = /home/dotcloud/env/bin/python hack/manage.py celeryd -E -l info -c 2 stderr_logfile = /var/log/supervisor/%(program_name)s_error.log stdout_logfile = /var/log/supervisor/%(program_name)s.log [程序:celerycam] 目录 = /home/dotcloud/current/ 命令 = /home/dotcloud/env/bin/python hack/manage.py celerycam stderr_logfile = /var/log/supervisor/%(program_name)s_error.log stdout_logfile = /var/log/supervisor/%(program_name)s.log
如前所述,我在另一个运行良好的 dotcloud 帐户下部署了几乎相同的代码。
rabbitmq 代理的状态:
$ ./dotcloud info hack.broker
别名:
- hackxxxx.dotcloud.com
配置:
密码:xxx
rabbitmq_management:真
用户:根
created_at: 1338702527.075196
数据中心:Amazon-us-east-1c
image_version:924a079b622a(最新)
内存:49M/512M (9%)
端口:
- 名称:ssh
网址:ssh://dotcloud@hackxxx.dotcloud.com:29209
- 名称:amqp
网址:amqp://root:xxxx@hackxxxx.dotcloud.com:29210
- 名称:http
网址:http://root:xxx@hack1-xxxx.dotcloud.com/
状态:运行
类型:rabbitmq