redis rq 入队文件

问题描述

我有一个正在编写文件并通过电子邮件发送的工作应用程序。但它不适用于 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 (将#修改为@)