问题描述
我有一个正在编写文件并通过电子邮件发送的工作应用程序。但它不适用于 heroku(超时)。所以我正在学习如何使用 redis 和 rq(当我到达那里时,我想如何在 heroku 上使用它们)。当我删除文件部分(并且终端打印出“输入”和“输出”行)时,以下代码发送电子邮件。但是当我包含文件时,如下所示,它不起作用。
import os
from flask import Flask,request
from flask_cors import CORS
from anotherfile import fancy_function
from flask_mail import Mail,Message
from config import PASSWORD
import redis
from rq import Queue
app = Flask(__name__)
CORS(app)
r = redis.Redis()
q = Queue(connection=r)
app.config.update(
MAIL_SERVER='smtp.zoho.com',MAIL_PORT=465,MAIL_USE_SSL=True,Security_EMAIL_SENDER = 'xxxx@zohomail.com',MAIL_USERNAME='xxxx@zohomail.com',MAIL_PASSWORD=PASSWORD
)
mail = Mail(app)
def background_stuff(email,file1,file2):
print("in1")
with app.app_context():
message = 'not received'
subject = 'remove files1,etc,and will be received'
fancy_function(file1,file2) # used to write a file.txt
msg = Message(recipients=[email],sender="xxxx@zohomail.com",body=message,subject=subject)
with app.open_resource("file.txt") as fp:
msg.attach("file.txt","text/plain",fp.read())
mail.send(msg)
os.remove("file.txt")
return app
@app.route('/<email>',methods=["POST"])
def send(email):
file1 = request.files['file1']
File2 = request.files['file2']
print("out1")
job = q.enqueue(background_stuff,email,file2)
print("out2")
return {'result': "Hello World"}
rq worker 只是在终端中挂起这个:
11:06:41 default: app.background_stuff('xxxx@zohomail.com',<FileStorage: 'file1.pdf' ('application/file1')>,<FileStorage: 'file2.txt' ('text/plain')>) (63b61c73-db09-4059-8b18-733b1380d5c8)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)