Hello? Я использую Amazon SES для отправки писем через Flask rq Queue. Проблема заключается в том, что если я использую функцию enqueue в том виде, как она есть в документации, электронное письмо никогда не отправляется, но если я настраиваю функцию для вызова моего send_email с параметрами, электронное письмо отправляется, но приложение выдает ошибку AttributeError: 'bool 'У объекта нет атрибута' module 'Вот мой код
Код для задания (файл tasks.py, имеет функцию send_email)
def send_email(from_email, to_email, subject, body):
ses = boto3.client(
'ses',
region_name=os.getenv('SES_REGION'),
aws_access_key_id=os.getenv('AWS_ACCESS_KEY_ID'),
aws_secret_access_key=os.getenv('AWS_SECRET_ACCESS_KEY')
)
ses.send_email(
Source=from_email,
Destination={'ToAddresses': [to_email]},
Message={
'Subject': {'Data': subject},
'Body': {
'Html': {'Data': body}
}
}
)
return True
a) Сценарий, по которому работает, но электронное письмо никогда не отправляется
# Queue confirmation email
try:
# Generate token, confirm url, and template
token = encode_token(email)
confirm_url = generate_url('guest.confirm_email', token)
body = render_template('emails/confirm.html', first_name=first, confirm_url=confirm_url)
#send_mail("email@domain.com", email, "Confirm your Email - Company Name", body)
# Enqueue
redis_url = os.getenv('REDIS_URL')
with Connection(redis.from_url(redis_url)):
q = Queue()
q.enqueue(send_email, "email@domain.com", email, "Confirm your email address", body)
return jsonify({'success': 1})
except IntegrityError:
db.session.rollback()
return jsonify({'success': 0})
С учетом вышеизложенного приложение не выдает ошибку, возвращает код успеха, но электронное письмо никогда не отправляется
b) Сценарий 2 (электронное письмо отправлено, но приложение выдает ошибку: AttributeError: у объекта 'bool' нет атрибута ' module ')
Для этого я вместо этого вызываю метод send_email и передаю его параметры в скобках как
q.enqueue(send_email("email@domain.com", email, "Confirm your email address", body))
Письмо отправлено, но приложение выдает ошибку.
Полный код для сценария 2:
# Queue confirmation email
try:
# Generate token, confirm url, and template
token = encode_token(email)
confirm_url = generate_url('guest.confirm_email', token)
body = render_template('emails/confirm.html', first_name=first, confirm_url=confirm_url)
#send_mail("email@domain.com", email, "Confirm your Email - Company Name", body)
# Enqueue
redis_url = os.getenv('REDIS_URL')
with Connection(redis.from_url(redis_url)):
q = Queue()
q.enqueue(send_email("email@domain.com", email, "Confirm your email address", body))
return jsonify({'success': 1})
except IntegrityError:
db.session.rollback()
return jsonify({'success': 0})
Любая помощь будет принята с благодарностью.