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