2016-09-03 23 views
0

我通過芹菜爲我的社交網絡Django Web應用程序運行異步任務。在我當前的設置中,celery workers和celerybeat在Web應用程序服務器上運行,而postgresql DB駐留在單獨的服務器上。異步任務不應阻礙/放慢用戶體驗,因此我決定將它們移到自己的專用機器上(它們現在變得相當龐大)。將芹菜移動到Django項目的遠程專用機器

我的問題是關於如何實現上述架構。異步工作人員正在操作數據庫中的表和行。

1)我怎麼會叫我的非同步工人在遠程位置,

2)如何將我的路線他們的結果以實現數據庫所需的更改?

想知道最有效的方法來實現這一點,並說明一個例子會很好。提前致謝。

回答

0

你只需要改變BROKER_URL這樣的:

BROKER_URL = 'AMQP://用戶名:[email protected]//'

所以,首先你必須決定你想要什麼經紀人使用,更多的信息可以在這裏找到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數據庫的遠程主機。

+0

@HassanBaig查看我的編輯1 –

+0

@HassanBaig請仔細閱讀我的回答。我在答案的第5段中提到了這件事。你必須在芹菜服務器上克隆你的項目 –

+0

那麼,根據第5段,似乎我需要從遠程服務器上的git/svn中拖出*我的整個項目*。因此,似乎我的遠程服務器將成爲我的Web應用程序服務器的快照,除了它會有芹菜工作者,並且不會像Web應用程序服務器那樣處理流量,因此無需安裝nginx或啓動gunicorn。情況是這樣嗎? –