제가 겪고 있는 문제를 설명드리겠습니다. 플러그인 관리자 액션을 통해 Discourse 프로덕션 인스턴스에 약 200개의 게시물을 한 번에 시드(seed)하는 기능이 필요합니다. 이 게시물들은 10명의 일반 사용자 중 한 명에 의해 ‘생성된’ 것으로 표시되어야 합니다. 이 기능이 플러그인 액션인 이유는, 해당 인스턴스의 사용자들이 훈련시킬 모더레이터 팀이 있기 때문이며, 훈련용 테스트 게시물이 필요하고 필요할 때마다 추가 시드할 수 있는 기능을 원했기 때문입니다.
PostCreator.new에 skip_validations: true를 전달하는 방식으로 이 기능을 정상적으로 구현했습니다. 그러나 이제 생성된 게시물 중 일부가 플래그(flag) 처리되어야 한다는 새로운 요구사항이 생겼습니다.
재빌드 없이 API를 통해 6만 명의 사용자를 최대한 빠르게 가져오려고 합니다. 테스트 설치 환경에서 YAML을 통해 관리자 API 한도를 상향 조정해 보았지만, 작동하지 않는 것 같았습니다. 다만 제가 잘못했을 수도 있습니다. (컨테이너에서 가져오기를 실행 중이므로 HTTP 스로틀링은 적용되지 않아야 합니다).
컨테이너에 진입하여 /var/www/discourse/config/discourse.conf 파일을 편집하고 해당 변수를 설정한 뒤, sv restart unicorn(또는 sv reload unicorn)을 실행하면 됩니다. 편집기를 사용하기 위해 apt-get update; apt-get install -y vim과 같은 명령을 실행할 필요가 있을 것입니다.
이상하네요. 설정 파일을 확인해 보니 새 제한 값이 이미 설정되어 있습니다. 즉, YAML 업데이트는 정상적으로 적용되었네요:
max_admin_api_reqs_per_key_per_minute = '6000'
하지만 실제로는 작동하지 않는 것 같습니다. 여전히 분당 60회 제한이 적용되고 있습니다. 요청을 분당 60회로 제한하면 대부분은 통과하지만, 지터(jitter)로 인해 일부 요청은 여전히 레이트 리미터를 트리거합니다:
{'success': True, 'active': True, 'message': 'Your account is activated and ready to use.', 'user_id': 3596}
{'success': False, 'message': ' New registrations are not allowed from your IP address (maximum limit reached). Contact a staff member.', 'errors': {'ip_address': ['New registrations are not allowed from your IP address (maximum limit reached). Contact a staff member.']}, 'values': {'name': None, 'username': 'asdfd', 'email': 'user@domain.com'}, 'is_developer': False}
{'success': True, 'active': True, 'message': 'Your account is activated and ready to use.', 'user_id': 3597}