Django 上的芹菜不起作用

Celery on Django not working

使用 Celery 发送电子邮件在生产服务器上运行良好。 尝试在本地开发人员 (VM) 上使用它但不起作用。 重启时我得到这个:

运行打开页面时,我也在控制台中收到此错误:

错误:[Errno 104] 连接被对等方重置

生产设置:

import djcelery
djcelery.setup_loader()
BROKER_HOST = "127.0.0.1"
BROKER_PORT = 5672   # default RabbitMQ listening port
BROKER_USER = "vs_user"
BROKER_PASSWORD = "user01"
BROKER_VHOST = "vs_vhost"
CELERY_BACKEND = "amqp"  # telling Celery to report the results back to RabbitMQ
CELERY_RESULT_DBURI = ""

当我 运行:

sudo rabbitmqctl list_vhosts

我明白了:

正在列出虚拟主机...

/

...完成。

我需要将此设置更改为 运行 它在本地 VM 上成功吗?

更新

虚拟主机和用户肯定丢失了,所以我 运行 建议了命令。 他们执行得很好,但仍然不起作用,同样的错误。 一定是另外一件事阻止了它的工作,celeryev 值得怀疑。 这是我在停止和启动服务器时得到的:

正在停止 celeryev...不是 运行

正在启动 celeryev... : 没有那个文件或目录

回溯(最近调用最后):

 File "/webapps/target/forums/json_views.py", line 497, in _send_forum_notifications
    post_master_json.delay('ForumNotificationEmail', email_params)
  File "/usr/local/lib/python2.6/dist-packages/celery-3.0.25-py2.6.egg/celery/app/task.py", line 357, in delay
    return self.apply_async(args, kwargs)
  File "/usr/local/lib/python2.6/dist-packages/celery-3.0.25-py2.6.egg/celery/app/task.py", line 474, in apply_async
    **options)
  File "/usr/local/lib/python2.6/dist-packages/celery-3.0.25-py2.6.egg/celery/app/amqp.py", line 250, in publish_task
    **kwargs
  File "/usr/local/lib/python2.6/dist-packages/kombu-2.5.16-py2.6.egg/kombu/messaging.py", line 164, in publish
    routing_key, mandatory, immediate, exchange, declare)
  File "/usr/local/lib/python2.6/dist-packages/kombu-2.5.16-py2.6.egg/kombu/connection.py", line 470, in _ensured
    interval_max)
  File "/usr/local/lib/python2.6/dist-packages/kombu-2.5.16-py2.6.egg/kombu/connection.py", line 396, in ensure_connection
    interval_start, interval_step, interval_max, callback)
  File "/usr/local/lib/python2.6/dist-packages/kombu-2.5.16-py2.6.egg/kombu/utils/__init__.py", line 217, in retry_over_time
    return fun(*args, **kwargs)
  File "/usr/local/lib/python2.6/dist-packages/kombu-2.5.16-py2.6.egg/kombu/connection.py", line 246, in connect
    return self.connection
  File "/usr/local/lib/python2.6/dist-packages/kombu-2.5.16-py2.6.egg/kombu/connection.py", line 761, in connection
    self._connection = self._establish_connection()
  File "/usr/local/lib/python2.6/dist-packages/kombu-2.5.16-py2.6.egg/kombu/connection.py", line 720, in _establish_connection
    conn = self.transport.establish_connection()
  File "/usr/local/lib/python2.6/dist-packages/kombu-2.5.16-py2.6.egg/kombu/transport/pyamqp.py", line 115, in establish_connection
    conn = self.Connection(**opts)
  File "/usr/local/lib/python2.6/dist-packages/amqp-1.0.13-py2.6.egg/amqp/connection.py", line 136, in __init__
    self.transport = create_transport(host, connect_timeout, ssl)
  File "/usr/local/lib/python2.6/dist-packages/amqp-1.0.13-py2.6.egg/amqp/transport.py", line 264, in create_transport
    return TCPTransport(host, connect_timeout)
  File "/usr/local/lib/python2.6/dist-packages/amqp-1.0.13-py2.6.egg/amqp/transport.py", line 99, in __init__
    raise socket.error(last_err)
error: timed out

I 运行 manage.py celeryev 控制台显示 workers 并且 tasks.Everything 为空,仅出现连接错误:错误(超时( 'timed out',),) 重复。

您似乎没有在本地 RabbitMQ 服务器上设置指定的虚拟主机。

您首先需要添加虚拟主机。

sudo rabbitmqctl add_vhost vs_vhost

接下来您需要为您的用户添加权限。

sudo rabbitmqctl set_permissions -p vs_vhost vs_user ".*" ".*" ".*"

此外,请确保您确实设置了一个用户,否则您可以使用此命令添加一个。

sudo rabbitmqctl add_user vs_user user01