【发布时间】:2023-03-21 13:13:01
【问题描述】:
我正在尝试使用 redis rq 创建一个任务队列。我试图按照教程进行操作,但我正在使用 docker。以下是我的代码-
app.py
from flask import Flask, request
import redis
from rq import Queue
import time
app = Flask(__name__)
r = redis.Redis()
q = Queue(connection=r)
def background_task(n):
""" Function that returns len(n) and simulates a delay """
delay = 2
print("Task running")
print(f"Simulating a {delay} second delay")
time.sleep(delay)
print(len(n))
print("Task complete")
return len(n)
def index():
if request.args.get("n"):
job = q.enqueue(background_task, request.args.get("n"))
return f"Task ({job.id}) added to queue at {job.enqueued_at}"
return "No value for count provided"
if __name__ == "__main__":
app.run()
Docker 撰写文件-
version: "3.8"
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
environment:
FLASK_ENV: development
redis:
image: "redis:alpine"
Dockerfile
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
每当我运行 '''docker-compose up --build''' 并打开 http://localhost:5000/ 时,我都找不到 Url 我哪里错了? 应该如何在 docker 容器中使用 rq worker 命令。
【问题讨论】:
-
我是在 docker 中使用 redis 的新手,因此任何指向该内容的教程链接都会有所帮助
标签: python docker flask redis docker-compose