在将email env变量设置为每个https://redash.io/help/open-source/setup之后(用于AWS )
sudo docker-compose run --rm server manage send_test_mail
工作,我也会收到这封邮件。
但是邀请电子邮件不会被发送。
在尝试这个命令时-直接发送邀请,
sudo docker-compose run --rm server manage users invite x@x.com X admin@x.com
我得到以下错误:
引发RuntimeError(“应用程序无法创建URL”)
RuntimeError:应用程序无法为独立于请求的URL生成创建URL适配器。您可以通过设置SERVER_NAME配置变量.来修复此问题。
发布于 2021-06-18 03:39:15
来自https://github.com/getredash/redash/issues/5266#issuecomment-847756246。感谢@kijimaD。
我也处于同样的情况。我找到了一种发送邀请邮件的方法。
运行停靠-组合后,在发送浏览器邀请电子邮件时检查日志(↓节选)。
$ docker-compose up
...
nginx_1 | 172.31.42.153 - - [24/May/2021:10:59:25 +0000] "POST /api/users/124/reset_password HTTP/1.1" 200 122 "https://example.com/users/124" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36" "110.66.19.160"
scheduler_1 | [2021-05-24 10:59:25,960][PID:16][ERROR][ForkPoolWorker-3] task_name=redash.tasks.send_mail task_id=39f69b3c-a109-43d5-bd31-c7dd99955427 Failed sending message: Reset your password
scheduler_1 | Traceback (most recent call last):
scheduler_1 | File "/app/redash/tasks/general.py", line 58, in send_mail
scheduler_1 | mail.send(message)
scheduler_1 | File "/usr/local/lib/python2.7/site-packages/flask_mail.py", line 491, in send
scheduler_1 | with self.connect() as connection:
scheduler_1 | File "/usr/local/lib/python2.7/site-packages/flask_mail.py", line 144, in __enter__
scheduler_1 | self.host = self.configure_host()
scheduler_1 | File "/usr/local/lib/python2.7/site-packages/flask_mail.py", line 158, in configure_host
scheduler_1 | host = smtplib.SMTP(self.mail.server, self.mail.port)
scheduler_1 | File "/usr/local/lib/python2.7/smtplib.py", line 256, in __init__
scheduler_1 | (code, msg) = self.connect(host, port)
scheduler_1 | File "/usr/local/lib/python2.7/smtplib.py", line 317, in connect
scheduler_1 | self.sock = self._get_socket(host, port, self.timeout)
scheduler_1 | File "/usr/local/lib/python2.7/smtplib.py", line 292, in _get_socket
scheduler_1 | return socket.create_connection((host, port), timeout)
scheduler_1 | File "/usr/local/lib/python2.7/socket.py", line 575, in create_connection
scheduler_1 | raise err
scheduler_1 | error: [Errno 99] Cannot assign requested address
scheduler_1 | [2021-05-24 10:59:25,961][PID:16][INFO][ForkPoolWorker-3] Task redash.tasks.send_mail[39f69b3c-a109-43d5-bd31-c7dd99955427] succeeded in 0.00195795716718s: None
server_1 | [2021-05-24 10:59:28,257][PID:12][INFO][metrics] method=GET path=/health_check endpoint=redash_index status=302 content_type=text/html; charset=utf-8 content_length=311 duration=1.80 query_count=0 query_duration=0.00
显然,错误内容不同于测试命令。这看起来像是scheduler_1实例无法读取端口主机的错误。
换句话说,实例不读取环境变量。基于此错误,我向docker-compose.yml中的工人添加了一个环境变量。
在运行-d后,我成功地在browser.+1中发送了邀请邮件,但是测试命令docker服务器管理用户邀请user@example.com测试用户admin@example.com不会更改错误消息。
我有一个关于测试命令在特定情况下的可靠性的问题。显然,测试命令的行为与实际浏览器的行为不同。这似乎让很多人困惑..。
我对面临同样问题的人的建议是操作浏览器并查看日志中的实际错误,而不是使用test命令检查它。
我希望这能帮助那些在同样的情况下挣扎的人。
下面是我的坞-撰写和env配置。
码头工
$ cat docker-compose.yml
version: "2"
x-redash-service: &redash-service
image: redash/redash:8.0.0.b32245
depends_on:
- postgres
- redis
env_file: /opt/redash/env
restart: always
services:
server:
<<: *redash-service
command: server
ports:
- "5000:5000"
environment:
REDASH_WEB_WORKERS: 4
env_file: /opt/redash/env
scheduler:
<<: *redash-service
command: scheduler
environment:
QUEUES: "celery"
WORKERS_COUNT: 1
REDASH_WEB_WORKERS: 4
env_file: /opt/redash/env # <------------- Add
scheduled_worker:
<<: *redash-service
command: worker
environment:
QUEUES: "scheduled_queries,schemas"
WORKERS_COUNT: 1
REDASH_WEB_WORKERS: 4
env_file: /opt/redash/env # <------------- Add
adhoc_worker:
<<: *redash-service
command: worker
environment:
QUEUES: "queries"
WORKERS_COUNT: 2
REDASH_WEB_WORKERS: 4
env_file: /opt/redash/env # <------------- Add
redis:
image: redis:5.0-alpine
restart: always
postgres:
image: postgres:9.6-alpine
env_file: /opt/redash/env
volumes:
- /opt/redash/postgres-data:/var/lib/postgresql/data
restart: always
nginx:
image: redash/nginx:latest
ports:
- "80:80"
depends_on:
- server
links:
- server:redash
restart: always
env
$ cat env
PYTHONUNBUFFERED=0
REDASH_LOG_LEVEL=INFO
REDASH_REDIS_URL=redis://redis:6379/0
POSTGRES_PASSWORD=...
REDASH_COOKIE_SECRET=...
REDASH_SECRET_KEY=...
REDASH_DATABASE_URL=...
# Mail
REDASH_MAIL_SERVER=...
REDASH_MAIL_PORT=...
REDASH_MAIL_USE_TLS=...
REDASH_MAIL_USERNAME=...
REDASH_MAIL_PASSWORD=...
REDASH_MAIL_DEFAULT_SENDER=info@example.com
REDASH_HOST=https://example.com
REDASH_SERVER_NAME=https://example.com
https://stackoverflow.com/questions/64806142
复制相似问题