Supervisor配置虚拟环境中的celery

前几个月部署过使用虚拟环境的项目,今天把笔记补上!

使用supervisor部署普通项目中的celery和虚拟环境中的celery在command的写法上有些许不同,其他地方都差不多,话不多说,直接上配置。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
[program:celery]

;运行目录下执行命令,这里写绝对路径,需要虚拟环境中的celery启动服务

command=/home/syz/E_mall/bin/celery worker -A e_mall.celery -l info

;指定运行目录,表示项目的根目录,用来调用e_mall.celery

directory=/home/syz/E_mall/e_mall/



;启动设置

autostart=true ;当supervisor启动时,程序将会自动启动

autorestart=true ;自动重启

startsecs=10

numprocs=1 ;初始的进程





user=syz ;脚本运行的用户

;输出日志

stdout_logfile=/var/log/celery/celery_worker.log

stdout_logfile_maxbytes=10MB ;默认最大50M

stdout_logfile_backups=10 ;默认日志文件备份数,默认为10



;错误日志

redirect_stderr=false ;为true表示禁止监听错误

stderr_logfile=/var/log/celery/celery_worker_err.log

stderr_logfile_maxbytes=10MB

stderr_logfile_backups=10


;停止信号,默认TERM

;中断:INT (类似于Ctrl+C)(kill -INT pid),退出后会将写文件或日志(推荐)

;终止:TERM (kill -TERM pid)

;挂起:HUP (kill -HUP pid),注意与Ctrl+Z/kill -stop pid不同

;从容停止:QUIT (kill -QUIT pid)

stopsignal=INT



上述配置完毕后,注意需要对日志文件赋予权限,否则会报无法分配celery的错误,其实也就是无法写入日志文件。

解决方法:

chown -R syz:syz /var/log/celery

-R表示递归执行文件,目的是将该文件归属给syz这个用户名(这里是我的,改成你自己的),或者用户组。

区别于chmod,chmod是对文件的读,写,执行设置权限,而chown是对文件所属的对象赋予权限。

在我看来,chmod的目的对象是文件本身,而chown的目的对象其实是用户或组。chown要比chmod更加外层,只有符合chown的该用户,再进一步判断是否对文件拥有读,写,执行权限。