我试图使用supervisord运行以下python代码,但它开始重新启动第二个i执行supervisord -c /etc/supervisord.conf
请指教?
import urllib2
import time
def goget():
url = "http://hitch.tv/grabs.php"
data = urllib2.urlopen(url)
grabbedpic = data.read()
with open('/root/python/tmp.txt', 'r') as tmpfile:
last=tmpfile.read().replace('\n','')
msgstr = []
u = 'http://hitch.tv/'
print last
if grabbedpic == last:
print "same pic"
else:
msgstr = u + grabbedpic
//send email with msgstr here
with open('tmp.txt', 'w') as tmpfile:
tmpfile.write(grabbedpic)
time.sleep(15)
while True:
goget()
这是来自supervisord.log的日志输出
> 2014-02-19 22:44:17,993 INFO spawned: 'front' with pid 19859
> 2014-02-19 22:44:19,278 INFO exited: front (exit status 1; not
> expected) 2014-02-19 22:44:20,284 INFO spawned: 'front' with pid 19860
> 2014-02-19 22:44:21,516 INFO exited: front (exit status 1; not
> expected) 2014-02-19 22:44:23,523 INFO spawned: 'front' with pid 19862
> 2014-02-19 22:44:24,805 INFO exited: front (exit status 1; not
> expected) 2014-02-19 22:44:27,814 INFO spawned: 'front' with pid 19863
> 2014-02-19 22:44:29,004 INFO exited: front (exit status 1; not
> expected) 2014-02-19 22:44:30,006 INFO gave up: front entered FATAL
> state, too many start retries too quickly
来自supervisord.conf的
[program:front]
command=python /root/python/front.py
process_name = front
autostart = true
autorestart = true
startsecs = 10
stopwaitsecs = 30
答案 0 :(得分:1)
作为评论中提到的eggonlegs
,您可以通过查看/var/log/supervisor/
目录来浏览更多日志。我有同样的问题,我发现创建了以下文件:
celery_worker-stderr---supervisor-DEjyLf.log
(作为我的计划的名称[program:front]
)。
通过检查,我发现:
File "/usr/lib/python3.4/logging/__init__.py", line 1006, in __init__
StreamHandler.__init__(self, self._open())
File "/usr/lib/python3.4/logging/__init__.py", line 1030, in _open
return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/devel.log'
所以我的问题是由于权限,因为我没有在directory
文件中指定celery_worker.conf
。一旦指定:
directory = /path/to/logs/
一切都很完美。
可能不是同一个错误,但绝对检查这些stderr
或stdout
日志会有所帮助