by Guest » 03 Jan 2025, 10:52
Ich verwende FastAPI mit Redis und RQ für die Verarbeitung von Hintergrundaufgaben. Wenn ich versuche, den RQ-Worker mit dem folgenden Befehl zu starten:
Ich erhalte die folgende Fehlermeldung:
Code: Select all
AttributeError: module 'os' has no attribute 'fork'
Ich arbeite auf einem Windows-Computer und habe die erforderlichen Redis-Konfigurationen korrekt eingerichtet.
Hier ist der relevante Teil meines Codes:< /p>
Code: Select all
import os
from fastapi import FastAPI
from pydantic import BaseModel
from redis import Redis
from rq import Queue
from rq.job import Job
from app.helpers.count_helper import count_words_at_url
# initiate a new fastAPI app
app = FastAPI()
# Create a Redis connection
redis_conn = Redis(
host=os.environ.get("REDIS_HOST"),
port=os.environ.get("REDIS_PORT"),
db=os.environ.get("REDIS_DB"),
username=os.environ.get("REDIS_USERNAME"),
password=os.environ.get("REDIS_PASSWORD"),
ssl=False
)
class Task(BaseModel):
url: str
# Create a queue object with the connection
task_queue = Queue("task_queue", connection=redis_conn)
# testing api endpoint
@app.get("/task/{job_id}/status")
def get_task_status(job_id: str):
job = Job.fetch(job_id, connection=redis_conn)
return {
"status": job.get_status(),
"result": job.result
}
# endpoint for the job
@app.post("/task/async")
async def create_task(task: Task):
# Enqueue the job
job_instance = task_queue.enqueue(count_words_at_url, task.url, timeout=300)
return {
"message": "Job enqueued, callback will be made to the specified URL",
"job_id": job_instance.id
}
Was ich versucht habe:
- Ich habe meine Redis-Verbindungseinstellungen überprüft und sie sind korrekt.
Ich habe versucht, den Worker mit dem üblichen Befehl auszuführen, bin aber auf den oben genannten Fehler gestoßen.
Fragen:
- Warum tritt dieser Fehler unter Windows auf?
- Wie kann ich meinen Worker ändern, um die Verwendung von fork() zu vermeiden oder eine alternative Methode zu verwenden, die mit Windows kompatibel ist?
Ich verwende FastAPI mit Redis und RQ für die Verarbeitung von Hintergrundaufgaben. Wenn ich versuche, den RQ-Worker mit dem folgenden Befehl zu starten:
[code]rq worker --url task_queue
[/code]
Ich erhalte die folgende Fehlermeldung:
[code]AttributeError: module 'os' has no attribute 'fork'
[/code]
Ich arbeite auf einem Windows-Computer und habe die erforderlichen Redis-Konfigurationen korrekt eingerichtet.
Hier ist der relevante Teil meines Codes:< /p>
[code]import os
from fastapi import FastAPI
from pydantic import BaseModel
from redis import Redis
from rq import Queue
from rq.job import Job
from app.helpers.count_helper import count_words_at_url
# initiate a new fastAPI app
app = FastAPI()
# Create a Redis connection
redis_conn = Redis(
host=os.environ.get("REDIS_HOST"),
port=os.environ.get("REDIS_PORT"),
db=os.environ.get("REDIS_DB"),
username=os.environ.get("REDIS_USERNAME"),
password=os.environ.get("REDIS_PASSWORD"),
ssl=False
)
class Task(BaseModel):
url: str
# Create a queue object with the connection
task_queue = Queue("task_queue", connection=redis_conn)
# testing api endpoint
@app.get("/task/{job_id}/status")
def get_task_status(job_id: str):
job = Job.fetch(job_id, connection=redis_conn)
return {
"status": job.get_status(),
"result": job.result
}
# endpoint for the job
@app.post("/task/async")
async def create_task(task: Task):
# Enqueue the job
job_instance = task_queue.enqueue(count_words_at_url, task.url, timeout=300)
return {
"message": "Job enqueued, callback will be made to the specified URL",
"job_id": job_instance.id
}
[/code]
Was ich versucht habe:
[list]
[*]Ich habe meine Redis-Verbindungseinstellungen überprüft und sie sind korrekt.
Ich habe versucht, den Worker mit dem üblichen Befehl auszuführen, bin aber auf den oben genannten Fehler gestoßen.
[/list]
Fragen:
[list]
[*]Warum tritt dieser Fehler unter Windows auf?
[*]Wie kann ich meinen Worker ändern, um die Verwendung von fork() zu vermeiden oder eine alternative Methode zu verwenden, die mit Windows kompatibel ist?
[/list]