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



我通过芹菜为我的一个社交网络Django web应用程序运行异步任务。在我目前的设置中,芹菜工人和celerybeat运行在web应用服务器上,而postgresql DB驻留在单独的服务器上。

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

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

1)我如何在远程位置调用异步工作者,

2)我如何路由他们的结果来影响数据库中所需的更改?

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

你只需要像这样改变BROKER_URL:

BROKER_URL = 'amqp://username: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文件中添加远程机器db主机:

我假设你使用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数据库。

相关内容

  • 没有找到相关文章

最新更新