Uppgifter¶
Uppgiftsramverket tillhandahåller avtalet och infrastrukturen för bakgrundsarbete, inte motorn som kör det. API:t för uppgifter definierar hur arbete beskrivs, köas och spåras, men lämnar den faktiska körningen till extern infrastruktur.
Uppgiftsdefinition¶
Dekoratorn task¶
- task(*, priority=0, queue_name='default', backend='default', takes_context=False, **kwargs)[source]¶
Dekoratorn
@taskdefinierar enTask-instans. Alla nyckelordsargument skickas direkt till serverdelenstask_class(som harTasksom standard).Följande standardargument stöds:
priority: AngerpriorityförTask. Standardvärdet är 0.queue_name: Angerqueue_nameförTask. Standardvärdet är"default".backend: AngerbackendförTask. Standardvärdet är"default".takes_context: Styr om funktionenTaskaccepterar enTaskContext. Standardvärdet ärFalse. Mer information finns i uppgiftskontext.
Anpassade uppgiftsserverdelar kan definiera en anpassad
task_classsom accepterar ytterligare argument. De kan skickas via dekoratorn@task:@task(foo=5, bar=600) def my_task(): pass
Changed in Django 6.1:Stöd för att skicka godtyckliga
**kwargstill dekoratorn@tasklades till.Om den definierade
Taskinte är giltig enligt serverdelen utlösesInvalidTask.Användningsexempel finns i defining tasks.
Task¶
- class Task[source]¶
Representerar en Task som ska köras i bakgrunden. Uppgifter ska definieras med dekoratorn
task().Attribut för
Taskkan inte ändras. Mer information finns i modifying Tasks.- priority¶
Prioriteten för
Task. Prioriteter måste vara mellan -100 och 100, där högre tal ger högre prioritet och körs tidigare.Serverdelen måste ha
supports_prioritysatt tillTrueför att använda den här funktionen.
- backend¶
Aliaset för den serverdel som
Taskska köas till. Det måste matcha en serverdel som definieras iBACKEND.
- queue_name¶
Namnet på kön som
Taskska köas till. Standardvärdet är"default". Det måste matcha en kö som definieras iQUEUES, om inteQUEUESär satt till[].
- run_after¶
Den tidigaste tidpunkt då
Taskkörs. Det kan vara entimedelta, som används relativt den aktuella tiden, en tidszonsmedvetendatetime, ellerNoneom tiden inte är begränsad. Standardvärdet ärNone.Det här attributet kan anges med
using().Serverdelen måste ha
supports_defersatt tillTrueför att använda den här funktionen. Annars utlösesInvalidTask.
- name[source]¶
Namnet på funktionen som har dekorerats med
task(). Namnet är inte nödvändigtvis unikt.
- using(*, priority=None, backend=None, queue_name=None, run_after=None)[source]¶
Skapar en ny
Taskmed ändrade standardvärden. Den befintligaTasklämnas oförändrad.usinggör det möjligt att ändra följande attribut:Användningsexempel finns i modifying Tasks.
- enqueue(*args, **kwargs)[source]¶
Köar
Tasktill serverdelen förTaskför senare körning.Argument skickas till funktionen för
Taskefter en rundresa genom en cykel medjson.dumps()/json.loads(). Därför måste alla argument kunna JSON-serialiseras och behålla sin typ efter rundresan.Om
Taskinte är giltig enligt serverdelen utlösesInvalidTask.Användningsexempel finns i enqueueing Tasks.
- get_result(result_id)[source]¶
Hämtar ett resultat efter dess id.
Om resultatet inte finns utlöses
TaskResultDoesNotExist. Om resultatet inte har samma typ som den aktuella uppgiften utlösesTaskResultMismatch. Om serverdelen inte har stöd förget_result()utlösesNotImplementedError.
- aget_result(*args, **kwargs)¶
Den
async-variant avget_result.
Uppgiftskontext¶
- class TaskContext[source]¶
Innehåller kontext för den körande
Task. Kontext skickas endast till enTaskom den definierades medtakes_context=True.Attribut för
TaskContextkan inte ändras.- task_result¶
Den
TaskResultsom för närvarande körs.
Uppgiftsresultat¶
- class TaskResultStatus[source]¶
En Enum som representerar statusen för en
TaskResult.
- class TaskResult[source]¶
TaskResultlagrar informationen om en specifik körning av enTask.Attribut för
TaskResultkan inte ändras.- id¶
En unik identifierare för resultatet som kan skickas till
Task.get_result().Formatet för id beror på den serverdel som används. Id:n för uppgiftsresultat är alltid strängar med färre än 64 tecken.
Mer information finns i uppgiftsresultat.
- enqueued_at¶
Tidpunkten då
Taskköades.
- started_at¶
Tidpunkten då
Taskbörjade köras vid sitt första försök.
- last_attempted_at¶
Tidpunkten då den senaste körningen av
Taskbörjade köras.
- finished_at¶
Tidpunkten då
Taskkördes färdigt, oavsett om den misslyckades eller lyckades.
- backend¶
Serverdelen som resultatet kommer från.
- errors¶
En lista med instanser av
TaskErrorför de fel som utlöstes som en del av varje körning av uppgiften.
- return_value[source]¶
Returvärdet från funktionen
Task.Om
Taskinte kördes färdigt utan fel utlösesValueError.Användningsexempel finns i return values.
- arefresh()¶
Den
async-variant avTaskResult.refresh().
- attempts[source]¶
Antalet gånger som uppgiften har körts.
Om uppgiften för närvarande körs räknas den inte som ett försök.
- worker_ids¶
Id:n för de arbetare som har kört uppgiften.
Uppgiftsfel¶
Serverdelar¶
Serverdelar hanterar hur uppgifter lagras och körs. Alla serverdelar delar ett gemensamt gränssnitt som definieras av BaseTaskBackend och anger kärnmetoderna för att köa uppgifter och hämta resultat.
Grundläggande serverdel¶
- class BaseTaskBackend[source]¶
BaseTaskBackendär basklassen för alla uppgiftsserverdelar.- task_class¶
Den underklass till
Tasksom ska användas när uppgifter skapas med dekoratorntask(). Standard ärTask. Anpassade serverdelar kan åsidosätta detta för att använda en anpassad underklass avTaskmed ytterligare attribut.
- options¶
En ordbok med extra parametrar för uppgiftsserverdelen. Dessa anges med inställningen
OPTIONS.
- enqueue(task, args, kwargs)[source]¶
Uppgiftsserverdelar som är underklasser till
BaseTaskBackendska åtminstone implementera denna metod.När metoden implementeras köar
enqueue()task, enTask-instans, för senare körning.argsär positionsargumenten ochkwargsär nyckelordsargumenten som ska skickas tilltask. Returnerar enTaskResult.
- aenqueue(task, args, kwargs)¶
Varianten
asyncavBaseTaskBackend.enqueue().
- get_result(result_id)[source]¶
Hämta ett resultat med dess id. Om resultatet inte finns utlöses
TaskResultDoesNotExist.Om serverdelen inte stöder
get_result()utlösesNotImplementedError.
- aget_result(result_id)¶
Varianten
asyncavBaseTaskBackend.get_result().
- validate_task(task)[source]¶
Kontrollerar om den angivna
Taskkan köas med serverdelen. Om uppgiften inte är giltig utlösesInvalidTask.
Funktionsflaggor¶
Vissa serverdelar kanske inte stöder alla funktioner som Django tillhandahåller. Det går att identifiera vilka funktioner en serverdel stöder och eventuellt ändra beteendet därefter.
- BaseTaskBackend.supports_defer¶
Om serverdelen stöder att köa uppgifter som ska köras efter en viss tid med attributet
run_after.
- BaseTaskBackend.supports_async_task¶
Om serverdelen stöder att köa asynkrona funktioner (korutiner).
- BaseTaskBackend.supports_get_result¶
Om serverdelen stöder att hämta
Task-resultat från en annan tråd efter att de har köats.
- BaseTaskBackend.supports_priority¶
Om serverdelen stöder att köra uppgifter i den ordning som deras
priorityanger.
Tabellen nedan anger vilka av de inbyggda serverdelarna som stöder vilka funktioner:
Funktion |
||
|---|---|---|
Ja |
Nej |
|
Ja |
Ja |
|
Nej |
Nej [1] |
|
Ja [2] |
Ja [3] |
Tillgängliga serverdelar¶
Django innehåller endast serverdelar för utveckling och testning. De stöder lokal körning och inspektion. För serverdelar redo för produktion, se Konfigurera en uppgiftsbackend.
Omedelbar serverdel¶
- class ImmediateBackend[source]¶
Den omedelbara serverdelen kör uppgifter omedelbart i stället för i bakgrunden.
Dummy backend¶
Undantag¶
- exception InvalidTaskBackend[source]¶
Utlöses när den begärda
BaseTaskBackendär ogiltig.
- exception TaskResultDoesNotExist[source]¶
Utlöses av
get_result()när angivetresult_idinte finns.
- exception TaskResultMismatch[source]¶
Utlöses av
get_result()när angivetresult_idtillhör en annan Task än den aktuella Task.
Fotnoter