복붙노트

[REDIS] SSL을 통해 레디 스에 셀러리 연결 한 후 응답이 없습니다

REDIS

SSL을 통해 레디 스에 셀러리 연결 한 후 응답이 없습니다

나는이 튜토리얼을 따라 내 프로젝트에 셀러리 - 배경 관련 코드를 조정하고있다.

(: // localhost를 즉 HTTPS를) 내 경우에는 내가 도커 환경에서 작동하고, 나는 보안 사이트가 있습니다. 이는 보안 SSL 통신을 필요로한다.

나는 보안 연결에 대한 코드를 조정했다. 나는 로그 오류 메시지를 생성 초기 연결 문제를 가지고,하지만 난 해결 할 수 있었다 - 여기를 참조하십시오. 이제 로그 파일은 매우이지만, 나는 여전히 연결에 문제가 있다고 생각합니다. 작업을 triggerring 때 그 결과, 실행시에, 아무 일도 발생하지 않습니다.

문제를 조사하기 위해, 나는없이 SSL을 사용하여 비교 하였다. SSL을 사용하고 SSL을 사용하지 않는 사이의 유일한 차이점은 다음과 같습니다

cat web/project/__init__.py
...
# without ssl, port 6380
app.config['CELERY_BROKER_URL'] = 'redis://redis:6380/0'
app.config['CELERY_RESULT_BACKEND'] = 'redis://redis:6380/0'

# with ssl, port 6380
app.config['CELERY_BROKER_URL'] = 'rediss://redis:6380/0'
app.config['CELERY_RESULT_BACKEND'] = 'rediss://redis:6380/0'

----------------------------------------

cat web/project/flask_celery.py
...
# without ssl
celery = Celery(app.import_name,
                backend=app.config['CELERY_RESULT_BACKEND'],
                broker=app.config['CELERY_BROKER_URL'])

# with ssl
key_file = '/etc/nginx/ssl/localhost.key'
cert_file = '/etc/nginx/ssl/localhost.crt'
ca_file = '/etc/nginx/ssl/localhost.ca.crt'

celery = Celery(app.import_name,
                backend=app.config['CELERY_RESULT_BACKEND'],
                broker=app.config['CELERY_BROKER_URL'],
                broker_use_ssl = {
                    'ssl_keyfile': key_file,
                    'ssl_certfile': cert_file,
                    'ssl_ca_certs': ca_file,
                    'ssl_cert_reqs': ssl.CERT_REQUIRED
                },
                redis_backend_use_ssl = {
                    'ssl_keyfile': key_file,
                    'ssl_certfile': cert_file,
                    'ssl_ca_certs': ca_file,
                    'ssl_cert_reqs': ssl.CERT_REQUIRED
                })

SSL없이 나는 다음과 같은 로그 코드에서와 같이 작업이 트리거 (하지만 작업의 상태를 검사 할 때 다음 다른 CORS의 문제가) 볼 수 있습니다 :

docker logs webserver_celery_1 

 -------------- celery@bf6036e704aa v4.3.0 (rhubarb)
---- **** ----- 
--- * ***  * -- Linux-4.15.0-76-generic-x86_64-with-debian-10.2 2020-02-15 22:14:20
-- * - **** --- 
- ** ---------- [config]
- ** ---------- .> app:         project:0x7f986a2bdf50
- ** ---------- .> transport:   redis://redis:6380/0
- ** ---------- .> results:     redis://redis:6380/0
- *** --- * --- .> concurrency: 8 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery


[tasks]
  . project.sites_api.views.create_zip_file_task

[2020-02-15 22:15:16,129: INFO/MainProcess] Connected to redis://redis:6380/0
[2020-02-15 22:15:16,141: INFO/MainProcess] mingle: searching for neighbors
[2020-02-15 22:15:17,163: INFO/MainProcess] mingle: all alone
[2020-02-15 22:15:17,192: INFO/MainProcess] celery@bf6036e704aa ready.

다음 로그 코드에서와 같이 SSL을 사용하여 작업은 (6380/0 project.sites_api.views.create_zip_file_task 후 : //가 레디 스 유의가 레디 스에 연결 누락) 전혀 시작되지 않습니다 :

docker logs webserver_celery_1

 -------------- celery@2cbcf1ecbef3 v4.3.0 (rhubarb)
---- **** ----- 
--- * ***  * -- Linux-4.15.0-76-generic-x86_64-with-debian-10.2 2020-02-15 21:07:51
-- * - **** --- 
- ** ---------- [config]
- ** ---------- .> app:         project:0x7f7d7d56eed0
- ** ---------- .> transport:   rediss://redis:6380/0
- ** ---------- .> results:     rediss://redis:6380/0
- *** --- * --- .> concurrency: 8 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery


[tasks]
  . project.sites_api.views.create_zip_file_task

확보 된 경우에는 연결되지 이유 무엇을 할 수 있을까? 키가 잘못된 경우 나 메시지를 기대해야 하는가? 명령 줄에서 레디 스 용기에 셀러리 / 웹 컨테이너에서 연결을 테스트 할 수있는 방법이 있습니까?

감사

해결법

    from https://stackoverflow.com/questions/60243277/no-response-after-connecting-from-celery-to-redis-via-ssl by cc-by-sa and MIT license