Я немного больше читал и изо всех сил пытался заставить что-то добавить, и подумал, что пришло время снова спросить.
Я установил цветок для наблюдения за сельдереем, и я вижу два действительно странныхвещи.
Во-первых, я вижу активные панели задач и т. д. на панели инструментов, но панели задач, брокера и монитора пусты.
Вы можете увидеть их здесь: https://imgur.com/a/9nBDINg
У меня есть сельдерей и цветок, которыми управляет supervisord, поэтому они начались так:
[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
Также я не уверен, должен ли я управлять сельдереем с supervisord. Кажется, чтоскрипт в init.d запускается и управляет собой?
Кажется, я никогда не получаю супервизора для его запуска и мониторинга, т.е. supervisorctl возвращает этот
статус супервизора
flower RUNNING pid16741, время безотказной работы 1 день, 8: 39: 08
myproject FATAL Слишком быстрое завершение (журнал процесса может h
) Вторая проблема, которую я вижу, заключается в том, что повторные попытки, похоже, происходят, но просто исчезают.Если я снова посмотрю на панель задач: https://imgur.com/Ays7Pr8
Показывает количество задач, выполненных, выполненных и повторных.Количество повторных заданий, кажется, никогда не переходит к успешному или неудачному.
Я просмотрел файлы журналов своих работников из сельдерея и вижу, что задание принимается, повторяется и затем просто исчезает.Это последнее сообщение, которое я получил от задачи:
[2019-04-16 11: 14: 22,457: INFO / ForkPoolWorker-10] Задача myproject.defer_me [86541f53-2b2c-47fc-b9f1-82a394b63ee3]retry: Retry in 4s
Вот где я выполняю повторную попытку в своем коде:
@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!"
Я полностью понимаю, если это не удается, но тот факт, что задача просто полностью исчезает без ссылки наэто снова где-нибудь в рабочем журнале.
Любая помощь с этим будет очень признательна.Поскольку я все еще привыкаю ко всему этому, я не уверен, какой важный код целесообразно публиковать, чтобы помочь отладить это, поэтому, пожалуйста, дайте мне знать, если я должен публиковать / разъяснять что-либо.Я искал это, но я просто зашел в тупик.
Заранее благодарен за любую помощь!