2017-10-10 64 views
0

我有一個使用mod_wsgi守護進程測試Django站點,並且已經設置了一個簡單的Celery任務來通過電子郵件發送一個聯繫表,並安裝了主管。在監督員上運行Ubuntu上的芹菜任務

我知道Django代碼是正確的。

我遇到的問題是,當我提交表單時,我只收到一條消息 - 第一條。聯繫表單的後續完成完全不會發送任何消息。

在我的服務器上,我有另一個測試站點,運行配置好的監控任務,使用Django服務器(即不使用mod_wsgi)。我的兩個任務都運行良好,如果我做

sudo supervisorctl status 

這裏是我上面這已經描述了被保存在

/etc/supervisor/conf.d 

用戶在這種情況下被稱爲myuser的

任務我的conf文件
[program:test_project] 
command=/home/myuser/virtualenvs/test_project_env/bin/celery -A test_project worker --loglevel=INFO --concurrency=10 -n [email protected]%%h 
directory=/home/myuser/djangoprojects/test_project 
user=myuser 
numprocs=1 
stdout_logfile=/var/log/celery/test_project.out.log 
stderr_logfile=/var/log/celery/test_project.err.log 
autostart=true 
autorestart=true 
startsecs=10 

; Need to wait for currently executing tasks to finish at shutdown. 
; Increase this if you have very long running tasks. 
stopwaitsecs = 600 

stopasgroup=true 

; Set Celery priority higher than default (999) 
; so, if rabbitmq is supervised, it will start first. 
priority=1000 

我的其他測試網站有這個集合的命令 - 注意worker1 @ %%^h

command=/home/myuser/virtualenvs/another_test_project_env/bin/celery -A another_test_project worker --loglevel=INFO --concurrency=10 -n [email protected]%%h 

我明顯做錯了,我的表單只提交。如果我查看上面提到的out.log文件,我只會看到第一個任務,其他表單提交內容都不可見。

非常感謝提前。

UPDATE

我提交的第一種形式,在上午08點32分(GMT),將其接收,然後,如上所述,另一個此後不久爲其中未創建的任務。在完成問題後,我再次以9.15提交了表格,爲此創建了一個任務並收到了消息!然後我再次提交表單,但沒有再次創建任務。希望這可以幫助!

回答

0

使用ps auxf|grep celery查看您開始工作的工人數量,如果您之前開始有其他工人並且您沒有將其殺死,則您之前創建的工人將消耗該任務,導致您每兩三(或更多)時間只有一個任務被接收。

,你需要通過停止芹菜:

sudo supervisorctl -c /etc/supervisord/supervisord.conf stop all 

每次,並將此在supervisord.conf:

stopasgroup=true    ; send stop signal to the UNIX process group (default false) 

否則會導致內存泄漏和經常性的工作損失。


如果你有多個Django的網站,這裏是RabbitMQ的演示支持: 你需要的RabbitMQ虛擬主機,並設置用戶添加到虛擬主機:

sudo rabbitmqctl add_vhost {vhost_name} 
sudo rabbitmqctl set_permissions -p {vhost_name} {username} ".*" ".*" ".*" 

和不同的網站使用不同的虛擬主機(但可以使用相同的用戶)。 將此添加到您的django設置。潘岳:

BROKER_URL = 'amqp://username:[email protected]:5672/vhost_name' 

一些信息在這裏:

Using celeryd as a daemon with multiple django apps?

Running multiple Django Celery websites on same server

Run Multiple Django Apps With Celery On One Server With Rabbitmq VHosts

Run Multiple Django Apps With Celery On One Server With Rabbitmq VHosts

+0

嗨,非常感謝回到我身邊。我的supervisor conf文件中已經有stopasagroup = true。關於您對RabbitMQ的評論,我是否需要這樣做,因爲我沒有使用虛擬主機運行unbuntu? (即我沒有使用Plesk - 請原諒我對此的無知)。在此期間,我會看看提供的鏈接 - 非常感謝 – Newfoundland

+0

嗨,我遵循你給的指示,並得到它的工作 - 非常感謝 - 非常感謝 – Newfoundland

+0

我的榮幸.... – Ykh