celery 花在redis和ssl上返回500秒

ma8fv8wu  于 2021-06-07  发布在  Redis
关注(0)|答案(1)|浏览(478)

我刚装了celery 花。
它非常适合向我展示实时任务,它们是在哪个队列上处理的,cpu使用率和处理时间。
我还想访问代理页面,以便监视队列长度。
我遇到的问题是ssl。
代理页面返回500。查看日志,我看到以下堆栈跟踪。

2020-12-24T21:19:21.828079+00:00 app[web.1]: [W 201224 21:19:21 connection:255] Secure redis scheme specified (rediss) with no ssl options, defaulting to insecure SSL behaviour.
2020-12-24T21:19:21.854471+00:00 app[web.1]: [W 201224 21:19:21 connection:255] Secure redis scheme specified (rediss) with no ssl options, defaulting to insecure SSL behaviour.
2020-12-24T21:19:21.878474+00:00 app[web.1]: [E 201224 21:19:21 web:1793] Uncaught exception GET /broker (...)
2020-12-24T21:19:21.878479+00:00 app[web.1]: HTTPServerRequest(protocol='http', host='...herokuapp.com', method='GET', uri='/broker', version='HTTP/1.1', remote_ip='...')
2020-12-24T21:19:21.878480+00:00 app[web.1]: Traceback (most recent call last):
2020-12-24T21:19:21.878481+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/tornado/web.py", line 1704, in _execute
2020-12-24T21:19:21.878481+00:00 app[web.1]: result = await result
2020-12-24T21:19:21.878482+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/tornado/gen.py", line 234, in wrapper
2020-12-24T21:19:21.878482+00:00 app[web.1]: yielded = ctx_run(next, result)
2020-12-24T21:19:21.878482+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/tornado/gen.py", line 162, in _fake_ctx_run
2020-12-24T21:19:21.878483+00:00 app[web.1]: return f(*args,**kw)
2020-12-24T21:19:21.878483+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flower/views/broker.py", line 31, in get
2020-12-24T21:19:21.878485+00:00 app[web.1]: http_api=http_api, broker_options=broker_options, broker_use_ssl=broker_use_ssl)
2020-12-24T21:19:21.878485+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flower/utils/broker.py", line 237, in __new__
2020-12-24T21:19:21.878486+00:00 app[web.1]: return RedisSsl(broker_url, *args,**kwargs)
2020-12-24T21:19:21.878486+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flower/utils/broker.py", line 220, in __init__
2020-12-24T21:19:21.878486+00:00 app[web.1]: super(RedisSsl, self).__init__(broker_url, *args,**kwargs)
2020-12-24T21:19:21.878487+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flower/utils/broker.py", line 134, in __init__
2020-12-24T21:19:21.878487+00:00 app[web.1]: self.redis = self._get_redis_client()
2020-12-24T21:19:21.878488+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flower/utils/broker.py", line 155, in _get_redis_client
2020-12-24T21:19:21.878488+00:00 app[web.1]: return redis.Redis(**self._get_redis_client_args())
2020-12-24T21:19:21.878489+00:00 app[web.1]: File "/app/.heroku/python/lib/python3.6/site-packages/flower/utils/broker.py", line 225, in _get_redis_client_args
2020-12-24T21:19:21.878489+00:00 app[web.1]: client_args.update(self.broker_use_ssl)
2020-12-24T21:19:21.878554+00:00 app[web.1]: TypeError: 'NoneType' object is not iterable
2020-12-24T21:19:21.881667+00:00 app[web.1]: [W 201224 21:19:21 connection:255] Secure redis scheme specified (rediss) with no ssl options, defaulting to insecure SSL behaviour.

看来我得把证书交给 broker_use_ssl ,但我不知道在哪里或如何。
这些都部署在heroku上了。redis的url是我的生产应用程序,flower是在一个单独的应用程序上。
我吃的是celery {"ssl_cert_reqs": ssl.CERT_NONE} .
部署在heroku上的花看起来像
requirements.txt如下

celery==4.4.4
future==0.18.2
flower==0.9.7 
redis==3.5.3

然后是一个我试图传递的文件 ssl.CERT_NONE 返回0。它不起作用。

web: flower --port=$PORT --broker=$BROKER_URL --basic_auth=$FLOWER_BASIC_AUTH --broker_use_ssl={"ssl_cert_reqs": 0}

有人能解释一下如何设置这些配置选项吗?
谢谢您

slwdgvem

slwdgvem1#

似乎是一个关于 broker_use_ssl 已合并到 master 两天前。不确定它是否只是改进或修复了错误。这里有一个相关的问题。请注意,最新版本尚未包含此修复程序(4天前发布)。
不管怎样,这里有一些你可以尝试的东西:
你传递价值的方式 --broker_use_ssl -也许你需要避开引号,比如: --broker_use_ssl={\"ssl_cert_reqs\": 0} 或者 --broker_use_ssl="{\"ssl_cert_reqs\": 0}" .
尝试通过配置文件而不是命令行传递设置,例如: flower --conf=celeryconfig.py -这样您就不需要处理转义,并且可以像以前那样设置值( {"ssl_cert_reqs": 0} ).
使用 master 分支以查看最后一次提交是否解决了问题。
祝你好运!

相关问题