Superset电子邮件报告Errno 111连接被拒绝

时间:2020-06-24 13:30:12

标签: python email smtp superset

我正在尝试启用超集电子邮件报告功能,我按照文档中的说明进行操作,但是在尝试发送测试电子邮件时遇到了麻烦。

我将在下面发送我的配置:

superset_config.py

123.123.123.0 -> 123.123.123.127

docker-compose.yml

...

class CeleryConfig(object):
    BROKER_URL = 'redis://redis:6379/0'
    CELERY_IMPORTS = (
        'superset.sql_lab',
        'superset.tasks',
    )
    CELERY_RESULT_BACKEND = 'redis://redis:6379/0'
    CELERYD_LOG_LEVEL = 'DEBUG'
    CELERYD_PREFETCH_MULTIPLIER = 10
    CELERY_ACKS_LATE = True
    CELERY_ANNOTATIONS = {
        'sql_lab.get_sql_results': {
            'rate_limit': '100/s',
        },
        'email_reports.send': {
            'rate_limit': '1/s',
            'time_limit': 120,
            'soft_time_limit': 150,
            'ignore_result': True,
        },
    }
    CELERYBEAT_SCHEDULE = {
        'email_reports.schedule_hourly': {
            'task': 'email_reports.schedule_hourly',
            'schedule': crontab(minute=1, hour='*'),
        },
    }

CELERY_CONFIG = CeleryConfig

# Email Reports

EMAIL_NOTIFICATIONS = True

SMTP_HOST = "email-smtp.us-east-1.amazonaws.com"
SMTP_STARTTLS = False
SMTP_SSL = True
SMTP_USER = "xxxxxxxxxxxxxxxxxxxxx"
SMTP_PORT = 25
SMTP_PASSWORD = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
SMTP_MAIL_FROM = "xxxxxxxx@xxxxxxx.com"

...

我发现问题出在凭据上,但是我使用相同的凭据进行了本地测试,并且可以正常工作。

因此,我在发现问题出处时有些失落,如果有人可以帮助我,我将非常感激。

1 个答案:

答案 0 :(得分:0)

我忘了输入错误,我在这里发送:

superset-worker_1  | [2020-06-24 13:18:24,520: ERROR/ForkPoolWorker-1] Task email_reports.send[1447fee0-1ed4-4ff9-b2fe-b85417ff99c7] raised unexpected: URLError(ConnectionRefusedError(111, 'Connection refused'),)
superset-worker_1  | Traceback (most recent call last):
superset-worker_1  |   File "/usr/local/lib/python3.6/urllib/request.py", line 1318, in do_open
superset-worker_1  |     encode_chunked=req.has_header('Transfer-encoding'))
superset-worker_1  |   File "/usr/local/lib/python3.6/http/client.py", line 1254, in request
superset-worker_1  |     self._send_request(method, url, body, headers, encode_chunked)
superset-worker_1  |   File "/usr/local/lib/python3.6/http/client.py", line 1300, in _send_request
superset-worker_1  |     self.endheaders(body, encode_chunked=encode_chunked)
superset-worker_1  |   File "/usr/local/lib/python3.6/http/client.py", line 1249, in endheaders
superset-worker_1  |     self._send_output(message_body, encode_chunked=encode_chunked)
superset-worker_1  |   File "/usr/local/lib/python3.6/http/client.py", line 1036, in _send_output
superset-worker_1  |     self.send(msg)
superset-worker_1  |   File "/usr/local/lib/python3.6/http/client.py", line 974, in send
superset-worker_1  |     self.connect()
superset-worker_1  |   File "/usr/local/lib/python3.6/http/client.py", line 946, in connect
superset-worker_1  |     (self.host,self.port), self.timeout, self.source_address)
superset-worker_1  |   File "/usr/local/lib/python3.6/socket.py", line 724, in create_connection
superset-worker_1  |     raise err
superset-worker_1  |   File "/usr/local/lib/python3.6/socket.py", line 713, in create_connection
superset-worker_1  |     sock.connect(sa)
superset-worker_1  | ConnectionRefusedError: [Errno 111] Connection refused
superset-worker_1  | 
superset-worker_1  | During handling of the above exception, another exception occurred:
superset-worker_1  | 
superset-worker_1  | Traceback (most recent call last):
superset-worker_1  |   File "/usr/local/lib/python3.6/site-packages/celery/app/trace.py", line 385, in trace_task
superset-worker_1  |     R = retval = fun(*args, **kwargs)
superset-worker_1  |   File "/app/superset/app.py", line 114, in __call__
superset-worker_1  |     return task_base.__call__(self, *args, **kwargs)
superset-worker_1  |   File "/usr/local/lib/python3.6/site-packages/celery/app/trace.py", line 650, in __protected_call__
superset-worker_1  |     return self.run(*args, **kwargs)
superset-worker_1  |   File "/app/superset/tasks/schedules.py", line 374, in schedule_email_report
superset-worker_1  |     deliver_slice(schedule)
superset-worker_1  |   File "/app/superset/tasks/schedules.py", line 335, in deliver_slice
superset-worker_1  |     email = _get_slice_data(schedule)
superset-worker_1  |   File "/app/superset/tasks/schedules.py", line 262, in _get_slice_data
superset-worker_1  |     response = opener.open(slice_url)
superset-worker_1  |   File "/usr/local/lib/python3.6/urllib/request.py", line 526, in open
superset-worker_1  |     response = self._open(req, data)
superset-worker_1  |   File "/usr/local/lib/python3.6/urllib/request.py", line 544, in _open
superset-worker_1  |     '_open', req)
superset-worker_1  |   File "/usr/local/lib/python3.6/urllib/request.py", line 504, in _call_chain
superset-worker_1  |     result = func(*args)
superset-worker_1  |   File "/usr/local/lib/python3.6/urllib/request.py", line 1346, in http_open
superset-worker_1  |     return self.do_open(http.client.HTTPConnection, req)
superset-worker_1  |   File "/usr/local/lib/python3.6/urllib/request.py", line 1320, in do_open
superset-worker_1  |     raise URLError(err)
superset-worker_1  | urllib.error.URLError: <urlopen error [Errno 111] Connection refused>