将芹菜移到Django项目的远程专用机器上

时间:2016-09-03 19:55:48

标签: django celery remote-server

我通过celery运行异步任务,用于我的社交网络Django Web应用程序。在我当前的设置中,芹菜工作者和celerybeat在Web应用程序服务器上运行,而postgresql DB驻留在单独的服务器上。

异步任务不应该阻碍/减慢用户体验,因此我决定将它们移动到他们自己的专用机器上(他们现在变得非常庞大)。

我的问题是关于如何实现上述架构。异步工作者正在操作数据库中的表和行。

1)我如何在远程位置呼叫我的异步工人

2)我如何路由他们的结果以实现DB中所需的更改?

很想知道实现这一目标的最有效方法,一个说明性的例子会很好。提前致谢。

1 个答案:

答案 0 :(得分:0)

您只需要像这样更改BROKER_URL

BROKER_URL =' amqp://用户名:password@myremotehost.com//'

首先,您必须决定要使用的经纪商,可在此处找到更多信息http://docs.celeryproject.org/en/latest/getting-started/brokers/index.html

在上面的BROKER_URL示例中,我提到过使用rabbitmq-server。

在您的远程服务器上,您必须放置代码(可能使用git或svn),然后您需要安装您决定使用的任何代理,在我的示例中,您必须安装rabbitmq-server。在ubuntu中,您可以输入:      sudo apt-get install rabbitmq-server安装rabbitmq-server

然后你需要像这样安装celery:     pip install celery

您可以进一步向用户supervisor管理芹菜的启动,重启和停止。有关supervisor的更多信息,请访问:http://supervisord.org/

修改1:

答案1:芹菜功能调用相同。

答案2:你必须在settings.py文件中添加远程机器数据库主机,如下所示:

我假设您使用MySQL作为数据库。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': your_db_name,
        'USER': your_db_user,
        'PASSWORD': your_db_password,
        'HOST': your_remote_db_host_here,
        'PORT': your_port_no_for_mysql_here,
    },
}

所以这个设置会做的是它会告诉你应用程序的所有用户(如芹菜的用户)连接到MySQL数据库的远程主机。