RQ-Worker-Fehler unter Windows: AttributeError: Modul „OS“ hat kein Attribut „Fork“

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: RQ-Worker-Fehler unter Windows: AttributeError: Modul „OS“ hat kein Attribut „Fork“

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:

Code: Select all

rq worker --url  task_queue
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?

Top