Skip to content

Commit 174c84d

Browse files
committed
wip
1 parent bf6f0ee commit 174c84d

File tree

1 file changed

+166
-0
lines changed

1 file changed

+166
-0
lines changed

scheduler/migrations/0019_task.py

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
# Generated by Django 5.1.1 on 2024-10-08 14:41
2+
3+
import scheduler.models.task
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
("scheduler", "0018_alter_crontask_queue_alter_repeatabletask_queue_and_more"),
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name="Task",
16+
fields=[
17+
("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
18+
("created_at", models.DateTimeField(auto_now_add=True)),
19+
("updated_at", models.DateTimeField(auto_now=True)),
20+
(
21+
"name",
22+
models.CharField(help_text="Name of the job", max_length=128, unique=True, verbose_name="name"),
23+
),
24+
(
25+
"task_type",
26+
models.CharField(
27+
choices=[
28+
("CronTask", "Cron Task"),
29+
("RepeatableTask", "Repeatable Task"),
30+
("OnceTask", "Run once"),
31+
],
32+
default="OnceTask",
33+
max_length=32,
34+
verbose_name="Task type",
35+
),
36+
),
37+
("callable", models.CharField(max_length=2048, verbose_name="callable")),
38+
(
39+
"enabled",
40+
models.BooleanField(
41+
default=True,
42+
help_text="Should job be scheduled? This field is useful to keep past jobs that should no longer be scheduled",
43+
verbose_name="enabled",
44+
),
45+
),
46+
(
47+
"queue",
48+
models.CharField(
49+
choices=scheduler.models.task.get_queue_choices,
50+
help_text="Queue name",
51+
max_length=255,
52+
verbose_name="queue",
53+
),
54+
),
55+
(
56+
"job_id",
57+
models.CharField(
58+
blank=True,
59+
editable=False,
60+
help_text="Current job_id on queue",
61+
max_length=128,
62+
null=True,
63+
verbose_name="job id",
64+
),
65+
),
66+
(
67+
"at_front",
68+
models.BooleanField(
69+
blank=True,
70+
default=False,
71+
help_text="When queuing the job, add it in the front of the queue",
72+
null=True,
73+
verbose_name="At front",
74+
),
75+
),
76+
(
77+
"timeout",
78+
models.IntegerField(
79+
blank=True,
80+
help_text="Timeout specifies the maximum runtime, in seconds, for the job before it'll be considered 'lost'. Blank uses the default timeout.",
81+
null=True,
82+
verbose_name="timeout",
83+
),
84+
),
85+
(
86+
"result_ttl",
87+
models.IntegerField(
88+
blank=True,
89+
help_text="The TTL value (in seconds) of the job result.<br/>\n -1: Result never expires, you should delete jobs manually. <br/>\n 0: Result gets deleted immediately. <br/>\n >0: Result expires after n seconds.",
90+
null=True,
91+
verbose_name="result ttl",
92+
),
93+
),
94+
(
95+
"failed_runs",
96+
models.PositiveIntegerField(
97+
default=0, help_text="Number of times the task has failed", verbose_name="failed runs"
98+
),
99+
),
100+
(
101+
"successful_runs",
102+
models.PositiveIntegerField(
103+
default=0, help_text="Number of times the task has succeeded", verbose_name="successful runs"
104+
),
105+
),
106+
(
107+
"last_successful_run",
108+
models.DateTimeField(
109+
blank=True,
110+
help_text="Last time the task has succeeded",
111+
null=True,
112+
verbose_name="last successful run",
113+
),
114+
),
115+
(
116+
"last_failed_run",
117+
models.DateTimeField(
118+
blank=True, help_text="Last time the task has failed", null=True, verbose_name="last failed run"
119+
),
120+
),
121+
(
122+
"interval",
123+
models.PositiveIntegerField(
124+
blank=True, help_text="Interval for repeatable task", null=True, verbose_name="interval"
125+
),
126+
),
127+
(
128+
"interval_unit",
129+
models.CharField(
130+
blank=True,
131+
choices=[
132+
("seconds", "seconds"),
133+
("minutes", "minutes"),
134+
("hours", "hours"),
135+
("days", "days"),
136+
("weeks", "weeks"),
137+
],
138+
default="hours",
139+
max_length=12,
140+
null=True,
141+
verbose_name="interval unit",
142+
),
143+
),
144+
(
145+
"repeat",
146+
models.PositiveIntegerField(
147+
blank=True,
148+
help_text="Number of times to run the job. Leaving this blank means it will run forever.",
149+
null=True,
150+
verbose_name="repeat",
151+
),
152+
),
153+
("scheduled_time", models.DateTimeField(verbose_name="scheduled time")),
154+
(
155+
"cron_string",
156+
models.CharField(
157+
blank=True,
158+
help_text='Define the schedule in a crontab like syntax.\n Times are in UTC. Use <a href="https://crontab.guru/">crontab.guru</a> to create a cron string.',
159+
max_length=64,
160+
null=True,
161+
verbose_name="cron string",
162+
),
163+
),
164+
],
165+
),
166+
]

0 commit comments

Comments
 (0)