Django & Celery: Как запустить поток в AppConfig() только один раз?
У меня есть приложение Django iot_app с Celery и Rabbitmq, где в приложении под названием app_users в AppConfig() запускается поток:
app_users/apps.py:
def start_test_thread():
th = Thread(target=mqtt_test_function, args=(), daemon=True)
th.start()
class AppUsersConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "app_users"
def ready(self):
run_once = os.environ.get('CMDLINERUNNER_RUN_ONCE')
if run_once is not None:
return
os.environ['CMDLINERUNNER_RUN_ONCE'] = 'True'
start_test_thread()
Как вы видите, я проверяю, установлена ли переменная окружения, чтобы запустить поток только один раз. Это работает. Поток запускается только один раз. Проблема в том, что когда я запускаю Celery командой celery -A iot_app worker -l info
, поток запускается дважды. Как сделать так, чтобы поток запускался только один раз даже с помощью Celery?