์๋ ํ์ธ์,
๋ด๊ฐ๋ Kubernetes๋ livenessProbe์ ์ ๊ณตํ๊ณ readinessProbe ๋ด ํ์ด์ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ฐฐํฌ ํ ์๋ Kubernetes๋ฅผ ์ฌ์ฉํ๊ณ ์ฌ๊ธฐ ์ฐธ์กฐ .
์
๋ฌ๋ฆฌ ๋นํธ ๋๋ ์
๋ฌ๋ฆฌ ์์
์๊ฐ ์ด์ ์๊ณ ์ฌ๋ฐ๋ฅธ ์ํ์ธ์ง ํ์ธํ๋ ค๋ฉด ์ด๋ป๊ฒํด์ผํฉ๋๊น?
PID๋ ์๋ฅผ ๋ค์ด ๊ต์ฐฉ ์ํ๋ฅผ ํฌ์ฐฉํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ํด๊ฒฐ์ฑ
์ด ์๋๋๋ค.
๋์์ ๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์น์ ํ๋,
Celery์๋ ์ฌ์ฉํ ์์๋ ๋ชจ๋ํฐ๋ง API ๊ฐ ์์ต๋๋ค.
Celery ์์
์๊ฐ ํํธ ๋นํธ๋ฅผ ๋ณด๋ด๋ ๊ฒฝ์ฐ ํฌ๋๋ ๋ผ์ด๋ธ๋ก ๊ฐ์ฃผ๋์ด์ผํฉ๋๋ค.
์์
์๊ฐ ์์
์ ์จ๋ผ์ธ ์ด๋ฒคํธ๋ฅผ ๋ณด๋ธ ๊ฒฝ์ฐ ํฌ๋๊ฐ ์ค๋น๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋์ด์ผํฉ๋๋ค.
ํน์ ๋ฌธ์ ๋ ๊ธฐ๋ฅ ์์ฒญ์ด์๋ ๊ฒฝ์ฐ ๋ณ๋์ ๋ฌธ์ ๋ฅผ์ฌ์ญ์์ค.
์๋ํ ๊น์?
readinessProbe:
exec:
command:
- "/bin/sh"
- "-c"
- "celery -A path.to.app status | grep -o ': OK'"
initialDelaySeconds: 30
periodSeconds: 10
@ 7wonders ๋จผ์ ์ ๋ฌ๋ฆฌ ๋ ธ๋ ์ด๋ฆ์ ์ถ์ถํด์ผํฉ๋๋ค. ์ด readinessProbe๋ ์ํ๋ ์ ๋ฌ๋ฆฌ ์ธ์คํด์ค๊ฐ ์คํจํ๋ฉด ์คํจํฉ๋๋ค.
@thedrow ํ , ์ค์ ๋ก ์ค์ ๋ ธ๋๊ฐ ์คํจํด๋ ์ฑ๊ณตํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ๋ค๋ฅธ ๋ ธ๋๋ ๊ด์ฐฎ์ต๋๋ค.
์ฒ๋ผ ๋ณด์ธ๋ค
/bin/sh -c 'exec celery -A path.to.app inspect ping -d celery@$HOSTNAME'
๋ ์ค๋น ์ํ ํ์ธ์ ์ถฉ๋ถํ๋ฉฐ ํ๋์ ๋
ธ๋ ๋ง ํ์ธํฉ๋๋ค.
์ผ๋ถ ์ฑ์์๋ ์ ์ฒด CPU๋ฅผ ์ฌ์ฉํ์ฌ์ด ๋ช ๋ น์ ์คํํ๋ ๋ฐ ๋ช ์ด๊ฐ ๊ฑธ๋ฆด ์ ์์ผ๋ฉฐ kubernetes ๊ธฐ๋ณธ๊ฐ์ 10 ์ด๋ง๋ค ์คํํ๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ periodSeconds๋ฅผ ๋๊ฒ ์ค์ ํ๋ ๊ฒ์ด ํจ์ฌ ์์ ํฉ๋๋ค (์ฐ๋ฆฌ๋ 300์ผ๋ก ์ค์ ๋จ).
@redbaron ์ด ๋ช ๋ น์ด ์๋ ํ์ต๋๊น? ์๋ํ๋ค๋ฉด ํ์ฑ ๋ฐ ์ค๋น ๊ฐ๋ฅ์ฑ์ ๋ํ ์ค์ ์ ๋ฌด์์ ๋๊น?
์ด๋ค ์ด์ ๋ก์ด ์ค๋น ์ํ ํ๋ก๋ธ๋ ์ฐ๋ฆฌ์๊ฒ ๊ฑฐ์ ๋ง์กฑ์ค๋ฝ์ง ์์ต๋๋ค. ๊ฒ์ฌ๋ ํด๋ฌ์คํฐ์ ๋ถํ์์ด ๋น ๊ฒฐ์ ์ ์ผ๋ก ์๋ตํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ ํ์์ ์คํํฉ๋๋ค.
celery inspect ping -b " redis : // archii-redis-master : 6379"-d celery @ archii-task-crawl-integration-7d96d86b9d-jwtq7
๊ทธ๋ฆฌ๊ณ ์ ์์ ์ธ ํ ์๊ฐ (10 ์ด)์ ์ฌ์ฉํ๋ฉด ํด๋ฌ์คํฐ๊ฐ ์ ๋ฌ๋ฆฌ๊ฐ ์๊ตฌํ๋ CPU์ ์ํด ์์ ํ ์ข ๋ฃ๋ฉ๋๋ค.
~ ๋๋ ์ด๊ฒ์ 30 ์ด ๊ฐ๊ฒฉ์ผ๋ก ์๋๊ฐ์๊ฒ ์ฌ์ฉํฉ๋๋ค : sh -c celery -A path.to.app status | grep "${HOSTNAME}:.*OK"
~
๋๋ ์ด๊ฒ์ 30 ์ด ๊ฐ๊ฒฉ์ผ๋ก ์๋๊ฐ์๊ฒ ์ฌ์ฉํ๋ค : sh -c celery -A path.to.app inspect ping --destination celery@${HOSTNAME}
์ถ๊ฐ ๋ถํ๋ฅผ ์ ๋ฐํ์ง ์๋ ๊ฒ ๊ฐ๊ณ 100 ๋ช
์ด ๋๋ ์์
์๋ฅผ ์ด์ํ๊ณ ์์ต๋๋ค.
์ค๋น ์ํ ํ๋ก๋ธ๋ ํ์ํ์ง ์์ผ๋ฉฐ Celery๋ ์๋น์ค์ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๋กค๋ง ๋ฐฐํฌ์์ ์์
์ ์์์ ์ง์ฐ์ํค๋ ๋ฐ ์ถฉ๋ถํ minReadySeconds: 10
๋ฅผ ์ค์ ํ์ต๋๋ค.ํ์ง๋ง ๋ถ๋ช
ํ ํ๋ก์ ํธ์ Celery ์์ ์๊ฐ์ ๋ฐ๋ผ ๋ค๋ฅด๋ฏ๋ก ๋ก๊ทธ๋ฅผ ๊ฒํ ํ๊ณ ์ ์ ํ๊ฒ ์ค์ ํฉ๋๋ค.
์ค๋น ์ํ ํ๋ก๋ธ๋ ์๋น์ค์์ ์ฌ์ฉ๋์ง ์๋๋ผ๋ ์ฌ์ ํ ์ ์ฉํฉ๋๋ค. ํนํ ์์
์ ๋ฐฐํฌ๋ฅผ ์ํํ๊ณ ๋ฐฐํฌ๊ฐ ์ฑ๊ณตํ๋์ง ํ์ธํ๋ ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก kubectl rollout status deployment
ํฉ๋๋ค. readinessprobes์์ด ์ฐ๋ฆฌ๋ ์
๋ฌ๋ฆฌ๋ฅผ ์์ํ์ง ์์๊ณ ๊ทธ๊ฒ์ ์์ง ๋ชปํ๋ ๋์ ์ฝ๋๋ฅผ ๋ฐฐํฌํ์ต๋๋ค.
๋ด ์๋ฃจ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
readinessProbe:
exec:
command:
[
"/usr/local/bin/python",
"-c",
"\"import os;from celery.task.control import inspect;from <APP> import celery_app;exit(0 if os.environ['HOSTNAME'] in ','.join(inspect(app=celery_app).stats().keys()) else 1)\""
]
๋ค๋ฅธ ์ฌ๋๋ค์ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค ๐คทโโ๏ธ
๊ฐ์ฌํฉ๋๋ค @yardensachs!
๋ค๋ฅธ ์๋ฃจ์
์ ๋ฌธ์ ์ ์ ๋๋ฒ๊น
ํ๋ ๋ฐ ๋ง์ ์๊ฐ์ ํฌ์ํ์ญ์์ค.
celery inspect ping
๋ช
๋ น์ด exit (0) ๋๋ ๊ทธ๋ฐ ์์ผ๋ก ๋ฐํํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
celery inspect ping
๋ ์๋ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ด ํ๊ฒฝ ๋ณ์๋ฅผ ๋ฐ๊พธ๋ ค๋ฉด bash
๊ฐ ํ์ํฉ๋๋ค.
livenessProbe:
exec:
# bash is needed to replace the environment variable
command: [
"bash",
"-c",
"celery inspect ping -A apps -d celery@$HOSTNAME"
]
initialDelaySeconds: 30 # startup takes some time
periodSeconds: 60 # default is quite often and celery uses a lot cpu/ram then.
timeoutSeconds: 10 # default is too low
~ ์์ ๋๋ง ํ
์์ ์ด ์ ์ฒ๋ฆฌ๋๊ณ ๋ฐฑ ๋ก๊ทธ๊ฐ ์๋๋ฐ๋ ๋ถํ๊ฐ ๋ ๋์ผ๋ฉด ํ ๋ฒ์ ๋ช ๋ถ ๋์ ํ์ด ์ค๋จ๋๋ค๋ ์ฌ์ค์ ๋ฐ๊ฒฌํ๊ธฐ ๋๋ฌธ์ ํ์ฑ ์ํ ํ๋ก๋ธ์์ ์ ๋ฌ๋ฆฌ ๊ฒ์ฌ ํ์ ์ถ์ถํ์ต๋๋ค. eventlet์ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํ์ง๋ง ๊ณ์ ์กฐ์ฌ ์ค์ ๋๋ค.
@WillPlatnick Celery๋ ๋น๋๊ธฐ์์ด๋ฏ๋ก ์ ์ด ์ฝ ๋ฃจํด์์ํ ์์ฝ ๋ ์ฉ๋์ด ์๊ธฐ ๋๋ฌธ์ 5.0์์๋ ๋ฐ์ํ์ง ์์ต๋๋ค.
inspect ping
์์ฑ๋์ง ์๋ / ์ข๋น ํ๋ก์ธ์ค์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
root 2296 0.0 0.0 0 0 ? Z 16:04 0:00 [python] <defunct>
root 2323 0.0 0.0 0 0 ? Z 16:05 0:00 [python] <defunct>
...
์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๋ค๋ฅธ ์ฌ๋์ด ์์ต๋๊น? ๋จ์ผ ํ๋ก์ธ์ค ์คํ์ ๊ฐ์ ํ๊ธฐ์ํ --pool
์ธ์๊ฐ ์์ต๋๋ค.
celery inspect ping
@WillPlatnick ๋์ ๋ฌด์์ ์ฌ์ฉํ๊ณ ๊ณ์ญ๋๊น? ๊ณผ๋ถํ ์ํ์์ ํ๋ก๋ธ๊ฐ ์คํจํ๋ ๊ฒ๊ณผ ์ ์ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
@mcyprian ์ฐ๋ฆฌ๋ ํ์ฑ ํ๋ก๋ธ๋ฅผ ์ ๊ฑฐํ์ต๋๋ค. ๋ด ์ง๊ฐ์ eventlet๊ณผ ๊ด๋ จ์ด ์๋ค๊ณ ๋งํ์ง๋ง ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์์๋ด๋ ๊ฒ์ ์ฐ์ ์์๋ก ๋์ง ์์์ต๋๋ค.
Redis ๋ธ๋ก์ปค์ ๋์ผํ CPU ๋ฌธ์ ๋ฅผ ๋ง๋ฉ๋๋ค.
๋๊ตฌ๋ ์ง ํด๊ฒฐ์ฑ
์ ์ฐพ์์ต๋๊น?
์ฐ๋ฆฌ๋ ๋ํ ์ปจํ
์ด๋ ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ด๋ฆ์ ํ์์ "debug_task"๋ก ์์ฝํ๋ ์คํ์ํ์ต๋๋ค. ๋ฌธ์ ๋ ํ์ฌ RabbitMQ์ ๋ง์ ์ค๋๋ ๋๊ธฐ์ด์ด ์๋ค๋ ๊ฒ์
๋๋ค.
์ฌ์ฉ์ ์ ์ํ์ญ์์ค
sh -c celery -A path.to.app status | grep "${HOSTNAME}:.*OK"
https://github.com/celery/celery/issues/4079#issuecomment -437415370์ ์ ์ ๋๋๋ก rabbitmq์ ๋ํ ๋๊ท๋ชจ ์ค๋ฅ ๋ณด๊ณ ์๊ฐ ๋ฐ์ํฉ๋๋ค. https://github.com/celery/celery/issues/4355#issuecomment ์ฐธ์กฐ - 578786369
๊ฒ์ฌ ํ์ CPU ์ฌ์ฉ๋์ ์ค์ด๋ ๋ฐฉ๋ฒ์ ์ฐพ์ ๊ฒ ๊ฐ์ต๋๋ค.
celery -b amqp : // user : pass @ rabbitmq : 5672 / vhost ping ๊ฒ์ฌ
-A path.to.celery๋ฅผ ์ฌ์ฉํ์ฌ ์
๋ฌ๋ฆฌ ๊ตฌ์ฑ์๋ก๋ํ์ง ์์ผ๋ฉด ํ์คํ CPU ์ฌ์ฉ์ ๋์์ด๋์์ต๋๋ค.
๋๊ตฐ๊ฐ ํ์ธํ ์ ์์ต๋๋ค.
๊ฒ์ฌ ํ์ CPU ์ฌ์ฉ๋์ ์ค์ด๋ ๋ฐฉ๋ฒ์ ์ฐพ์ ๊ฒ ๊ฐ์ต๋๋ค.
celery -b amqp : // user : pass @ rabbitmq : 5672 / vhost ping ๊ฒ์ฌ
-A path.to.celery๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ฌ๋ฆฌ ๊ตฌ์ฑ์๋ก๋ํ์ง ์์ผ๋ฉด ํ์คํ CPU ์ฌ์ฉ์ ๋์์ด๋์์ต๋๋ค.
๋๊ตฐ๊ฐ ํ์ธํ ์ ์์ต๋๋ค.
์ข์! ๋ก๋ ๋ ์ฑ๋ณด๋ค ํจ์ฌ ๋ซ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ฌ์ ํ ์
๋ฌ๋ฆฌ ๊ฐ์ ธ ์ค๊ธฐ๋ฅผ ์์ํ๋ ํ์ด์ฌ ํ๋ก์ธ์ค์ ์์ฒญ๋ ์ค๋ฒ ํค๋๋ฅผ ์ป์ต๋๋ค. ๋๋ ์ฌ์ ํ ๋์ ๊ธฐ๊ฐ์ ๊ถ์ฅํฉ๋๋ค.
์๋
ํ์ธ์,
celery inspect ping -A app.tasks -d celery @ $ HOSTNAME์ "Error : Broadcast not supported by transport 'sqs'"๋ฅผ ์ ๊ณตํฉ๋๋ค.
SQS๋ฅผ ๋ธ๋ก์ปค๋ก ์ฌ์ฉํ๊ณ ์๋๋ฐ 'inspect'/ 'status'๋ช
๋ น์ด SQS์์ ์๋ํ์ง ์์์ ์๋ฏธํฉ๋๊น?
๊ท๋ชจ์ ๋ฐ๋ผ ๋ชจ๋ ์๊ฒฉ ์ ์ด ๊ธฐ๋ฅ์ผ๋ก ์ธํด kombu.pidbox
ํค์ ๋ํ ๋ช
๋ น ์ค์ ์ผ๋ก ์ธํด Redis ์ธ์คํด์ค๊ฐ CPU์์ ๊ธ์ฆํ๋ ๊ฒ์ผ๋ก ํ์ธ๋์์ผ๋ฏ๋ก ping์ ์ฌ์ฉํ๊ฑฐ๋ ์ํ๋ฅผ ๊ทธ๋๋ก ๊ฒ์ฌํ๊ฑฐ๋ ๊ฒ์ฌ ํ ์ ์์ต๋๋ค. ๋ชจ๋ ์๊ฒฉ ์ ์ด๋ฅผ ์ฌ์ฉํ๊ณ ํ๋ก๋์
์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ํด ์๊ฒฉ ์ ์ด๋ฅผ ๋นํ์ฑํํ๋ ค๊ณ ํฉ๋๋ค.
์ ์ฉ ์ํ ํ์ธ ๋๊ธฐ์ด์ ๊ฐ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ ์ธ ๊ฒ ๊ฐ์ง๋ง ์ ํ ํ์คํ์ง ์์ต๋๋ค.
๋๊ตฌ๋ ์ง ๊ฑด๊ฐ ๊ฒ์ฌ๋ฅผ ํ ์คํธํ๊ธฐ ์ํด ์๊ฒฉ ์ ์ด๋ฅผ ํฌํจํ์ง ์๋ ๋ค๋ฅธ ๋ฐฉํฅ์ด ์์ต๋๊น?
์ฐ๋ฆฌ๋ RabbitMQ ์ ๊ฑฐ ์ ์ฑ (๋๊ธฐ์ด์ด ์๋์ผ๋ก ์ญ์ ๋จ)๊ณผ ํจ๊ป ์ ์ฉ ์ํ ํ์ธ ๋๊ธฐ์ด์ ์ผ๋ง ๋์ ์ฑ๊ณต์ ์ผ๋ก ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์๋ฃจ์ ์ ๋ง์กฑํฉ๋๋ค. ๋๋ถ๋ถ์ด ๊ฒ์ฌ๋ ์ค์ ๋ก ์์ ์๊ฐ ์์ ์ ์ฒ๋ฆฌํ๊ณ ์๋ฃํ๋์ง ํ์ธํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋์ ํ ์ดํ๋ก ์ฐ๋ฆฌ๋ ๊ฐํ ๋ ธ๋์๋ค์๊ฒ ๋ ์ด์ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค.
@bartoszhernas ๋ง์์ ๋ช ๊ฐ์ง ์ฝ๋๋ฅผ ๊ณต์ ํฉ๋๊น? ๋นํธ๋ฅผ ํตํด ๋๊ธฐ์ด์ ์ถ๊ฐํ๊ณ ์์ ์๊ฐ ํฝ์ ํ๋ ๊ฒ๋ณด๋ค?
์ฝ๋ + ํ์ฑ ํ๋ก๋ธ ์น์ ์๋ณด๊ณ ์ถ์ต๋๋ค.
์๋ ํ์ธ์, ์ฝ๋๋ ์ ๋ง ์ฝ์ต๋๋ค.
Kubernetes์์ POD_NAME์ ๊ธฐ๋ฐ์ผ๋ก ๋๊ธฐ์ด ์ด๋ฆ์ ์ง์ ํ๊ณ ์ด๋ฅผ livecheck ์คํฌ๋ฆฝํธ์ ์ ๋ฌํฉ๋๋ค.
livenessProbe:
initialDelaySeconds: 120
periodSeconds: 70
failureThreshold: 1
exec:
command:
- bash
- "-c"
- |
python celery_liveness_probe.py $LIVENESS_QUEUE_NAME
env:
- name: MY_POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: LIVENESS_QUEUE_NAME
value: queue-$(MY_POD_NAME)
(Kubernetes๊ฐ ENV๋ฅผ ์ง์ ๋ช ๋ น์ผ๋ก ์ ๋ฌํ๋ ค๊ณ ํ ๋ ENV๋ฅผ ํ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ bash -c๋ฅผ ์ฌ์ฉํด์ผํฉ๋๋ค)
๊ทธ๋ฐ ๋ค์ celery_liveness_probe.py๋ Django๋ฅผ ์ค์ ํ์ฌ Celery๋ฅผ ์ฌ์ฉํ๊ณ POD ๋๊ธฐ์ด์์ ์์ ์ ์์ฝํฉ๋๋ค.
# encoding: utf-8
from __future__ import absolute_import, unicode_literals
import os
import sys
if __name__ == "__main__":
import django
sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..'))
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ahoy.archive.settings")
django.setup()
from ahoy.archive.apps.eventbus.service import eventbus_service
exit(0 if eventbus_service.health_check(sys.argv[1] if sys.argv and len(sys.argv) > 1 else None) else 1)
์ํ ํ์ธ ๊ธฐ๋ฅ์ ์์ ์ ๋ณด๋ด๊ณ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
def health_check(self, queue_name: Optional[str] = None) -> bool:
event = self.celery.send_task(
AhoyEventBusTaskName.LIVENESS_PROBE,
None,
queue=queue_name or self.origin_queue,
ignore_result=False,
acks_late=True,
retry=False,
priority=255
)
try:
is_success = event.get(timeout=10)
except (celery.exceptions.TimeoutError, AttributeError):
is_success = False
return is_success
๋ฐ๋ผ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ์ ๋ณด๋ด๊ณ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋๋ฉด ์์ ์๋ ์ ์์ ๋๋ค. ์์ ์๊ฐ ๋ฉ์ถ ๊ฒฝ์ฐ (์ฌ๋ฌ ๋ฒ ๋ฐ์) ์์ ์ด ์๋ฃ๋์ง ์๊ณ ํฌ๋๊ฐ ๋ค์ ์์๋๊ณ ๋ชจ๋ ๊ฒ์ด ์ ์์ผ๋ก ๋์๊ฐ๋๋ค.
์ ์ผํ์ฃผ์ ์ฌํญ์ ๊ธฐ์กด ๋๊ธฐ์ด์ ์ฒ๋ฆฌํด์ผํ๋ค๋ ๊ฒ์
๋๋ค. RabbitMQ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํฉ๋๋ค. ๋๊ธฐ์ด์ ๋ง๋ฃ ์ ์ฑ
์ ์ค์ ํ๊ธฐ ๋งํ๋ฉด๋ฉ๋๋ค.
https://www.rabbitmq.com/ttl.html#queue -ttl
@bartoszhernas ์ฝ๋๋ฅผ ๊ณต์
๋ด ๋๊ธฐ์ด์ด ๋์ ์ด๋ฉฐ Redis๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๋ง์ํ์ ๊ฒ์ฒ๋ผ Redis์์ ๋๊ธฐ์ด ์ด๋ฆ ๋ง๋ฃ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์์ผํฉ๋๋ค.
์, Redis์ BullMQ์ ๋น์ทํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ด ์๊ฐ์ ๋งค๋ฒ ๋๊ธฐ์ด์ ์ง์ฐ๋ Kubernetes ์ฉ CronJob์ ์์ฑํ๋ ๊ฒ์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
celery inspect ping
๋ ์๋ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ด ํ๊ฒฝ ๋ณ์๋ฅผ ๋ฐ๊พธ๋ ค๋ฉดbash
๊ฐ ํ์ํฉ๋๋ค.