์ตœ๋Œ€ 1 ๋ถ„ ์†Œ์š”

bind ์˜ต์…˜?

app.task(bind=True) ํ˜น์€ @shared_task(bind=True) ์™€ ๊ฐ™์ด Celery task๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„ ๋งŽ์ด ๋ณด๊ณ , ์‚ฌ์šฉํ•ด์™”๋‹ค.

์ด ๋•Œ, bind=False ๋กœ ๋ฐ”๊พธ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

์‚ฌ์‹ค bind=True์™€ False ๋Š” ํฐ ์ฐจ์ด๋ฅผ ๋ณด์ด์ง€๋Š” ์•Š๋Š”๋‹ค.

๋‚ด๊ฐ€ ์ •์˜ํ•œ task๊ฐ€ self ๋ฅผ ์ธ์ž๋กœ ๋ฐ›๊ณ , self.request ์™€ ๊ฐ™์ด self๋ฅผ ์ฐธ์กฐํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ์— bind=True ๋กœ ํ•˜๋ฉด ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์‚ดํŽด๋ณด์ž.

@app.task(bind=True)

@app.task(bind=True)
def debug_task(self):
    print(f'Request: {self.request!r}')

@app.task(bind=True) ์—์„œ bind=True ๋Š” Celery task ๋ฉ”์„œ๋“œ๊ฐ€ ์ž๋™์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ์ธ์ž๋กœ self ๋ฅผ ๋ฐ›๋„๋ก ํ•˜๋Š” ์˜ต์…˜์ด๋‹ค.

์ด ๊ฒฝ์šฐ self๋Š” task ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ , ์ด๋ฅผ ํ†ตํ•ด task์˜ ์†์„ฑ(self.request, self.retry ๋“ฑ)์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

@app.task(bind=False)

@app.task(bind=False)
def debug_task():
    print(f'Request: {self.request!r}')  # Error ๋ฐœ์ƒ

@app.task(bind=False ์—์„œ bind=False ๋Š” Celery task ๋ฉ”์„œ๋“œ๊ฐ€ self ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

์ฆ‰, task๊ฐ€ Celery task ์ธ์Šคํ„ด์Šค์— ๋ฐ”์ธ๋”ฉ ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์†Œ๋ฆฌ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— self ์— ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ , ์—ฐ์‡„์ ์œผ๋กœ Celery task ์ธ์Šคํ„ด์Šค์˜ ์†์„ฑ(self.request, self.retry ๋“ฑ)์— ์ ‘๊ทผ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ฒฐ๋ก 

์ฆ‰, bind=True ์™€ bind=False ๋Š” ํฐ ์ฐจ์ด๋ฅผ ๋ณด์ด์ง€๋Š” ์•Š๋Š”๋‹ค.

Celery task ์ธ์Šคํ„ด์Šค ์†์„ฑ์— ์ ‘๊ทผํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๋ฉด ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ํŠน๋ณ„ํ•œ ์—๋Ÿฌ์—†์ด ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ, Celry task ์ธ์Šคํ„ด์Šค ์†์„ฑ์— ์ ‘๊ทผํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ bind=True ๋ฅผ ์„ค์ •ํ•ด์ฃผ๋„๋ก ํ•˜์ž.

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ