我一直在努力阅读更多内容,以期获得一些额外的东西,并认为是时候再次提出要求了。
我已经架起花来监控芹菜,我看到了两件事,很奇怪。
首先,我可以在仪表板上看到正在执行的任务等,但是我的任务,代理和监视面板为空。
您可以在这里看到它:https://imgur.com/a/9nBDINg
我的芹菜和鲜花由主管监督,所以他们的工作是这样的:
[program:myproject]
command=sudo /etc/init.d/celeryd start
directory=/home/ian/myproject
stdout_logfile=/var/log/celeryd/celerydstdout.log
stderr_logfile=/var/log/celeryd/celerydstderr.log
user=***
password=*****
autostart=true
autorestart=true
startsecs=10
stopwaitsecs=600
[program:flower]
directory=/home/ian/myproject
command =flower -A myproject --broker_api=http://localhost:15672/api --broker=pyamqp://
stdout_logfile=/var/log/flower/flowerstdout.log
stderr_logfile=/var/log/flower/flowerstderr.log
autostart=true
autorestart=true
我也不确定是否应该在有监督者的情况下管理芹菜,看来init.d中的脚本会启动并自行管理?
我似乎从来没有让主管启动和监视它,即,supervisorctl返回了此
主管状态
flower RUNNING pid 16741,正常运行时间1天,8:39:08
myproject FATAL退出速度太快(进程日志可能会
我看到的第二个问题是重试似乎发生了,但只是消失了。如果我再次查看任务面板:https://imgur.com/Ays7Pr8
它显示已处理,成功和重试的任务数量。重试的任务数量似乎从未成功或失败。
我查看了芹菜工人的日志文件,可以看到任务被接受,重试然后消失了。这是我从任务中收到的最后一条消息:
[2019-04-16 11:14:22,457:INFO / ForkPoolWorker-10]任务myproject.defer_me [86541f53-2b2c-47fc-b9f1-82a394b63ee3]重试:4秒后重试
这是我在代码中实现重试的地方:
@app1.task(bind=True,max_retries=10)
def defer_me(self,pp, identity, incr, datum):
try:
attempt_task(pp, identity, incr, datum)
except Exception:
raise self.retry(countdown=2 **self.request.retries)
def putting():
pp = 0
global datum
incr = 0
if request.method == 'PUT':
# read in the data and determine the total length
identity = request.stream.read()
pp = len(identity)
# defer the request to process after the response is returned to the client
dbtask = defer_me.apply_async(args=[pp,identity,incr,datum])
print(dbtask)
taskres = AsyncResult("dbtask")
return "Data has been inserted!"
我完全理解它是否失败,但是事实上任务完全消失了,而工人日志中的任何地方都没有引用它。
任何帮助,我们将不胜感激。由于我仍在使用所有这些内容,因此不确定发布什么重要的代码明智以帮助调试此功能,所以请告诉我是否应该发布/阐明任何内容。我一直在搜索这些东西,但是我已经死胡同了。
在此先感谢您的帮助!