У меня есть функция index , которая берет изображение и передает его для обработки функции run , импортированной из другого модуля ( true.detect.py ),Когда я пытаюсь выполнить задачу job = q.enqueue(run, img
) внутри функции index , я получаю ошибку импорта
12:02:13 default: true.detect.run('/home/y700/projects/ultratrue/app/uploads/honey-bee-2-1qf37bs.jpg') (7544ed7c-7274-416c-bc83-daa90d7fe0c1)
12:02:13 ModuleNotFoundError: No module named 'true'
Структура папки
project
-true
--detect.py
--other files
-app
--app.py
--main.py
app.py
basedir = os.path.abspath(os.path.join(os.path.dirname( __file__ )))
UPLOAD_FOLDER = basedir + '/uploads'
ALLOWED_EXTENSIONS = set(["jpg"])
app = Flask(__name__)
app.config.from_object(Configuration)
base = os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..'))
sys.path.append(base)
from true.detect import run
#Connect to redis DB
from redis import Redis
from rq import Queue
q = Queue(connection=Redis())
@app.route('/', methods=['GET', 'POST'])
def index():
if request.method == 'POST':
...load and save img file logic....
........
img = (os.path.join(app.config['UPLOAD_FOLDER'], filename))
job = q.enqueue(run, img)
if job.is_finished:
return redirect(url_for("result", count=count))
else:
return "Wait"
return render_template("index.html")
Но затем я изменяю
job = q.enqueue(run, img)
if job.is_finished:
return redirect(url_for("result", count=count))
else:
return "Wait"
на стандартный вызов функции без использования очереди задач
count = run(img)
return redirect(url_for("result", count=count))
все начинает работать.