Skip to content

Commit 6b15469

Browse files
committed
Job.tasks are now a dict of (name, Task), not a list. This is simpler to write, and a better representation of the data. (However, it did require a rather deep revision of everything.)
1 parent 424da34 commit 6b15469

10 files changed

+206
-261
lines changed

README.md

+3-10
Original file line numberDiff line numberDiff line change
@@ -62,30 +62,23 @@ PostQ is a job queue system with
6262
database = Database(os.getenv('DATABASE_URL'))
6363
await database.connect()
6464
job = models.Job(
65-
workflow={
66-
'tasks': [
67-
{
68-
'name': 'a',
69-
'params': {'image': 'debian:buster-slim', 'command': 'ls -laFh'}
70-
}
71-
]
72-
}
65+
tasks= {'a': {'image': 'debian:buster-slim', 'command': 'ls -laFh'}}
7366
)
7467
record = await database.fetch_one(
7568
tables.Job.insert().returning(*tables.Job.columns), values=job.dict()
7669
)
7770
7871
# Then, after a few seconds...
7972
80-
joblog = models.JobLog(
73+
joblog = models.Job(
8174
**await database.fetch_one(
8275
tables.JobLog.select().where(
8376
tables.JobLog.columns.id==record['id']
8477
).limit(1)
8578
)
8679
)
8780
88-
print(joblog.workflow.tasks[0].results)
81+
print(joblog.tasks[0].results)
8982
9083
# total 4.0K
9184
# drwxr-xr-x 2 root root 64 Sep 11 04:11 ./

alembic/versions/20200905194820_b76f56db845a_job_log.py alembic/versions/20200912045539_8c4306d66631_job_log.py

+9-15
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
"""job_log
1+
"""job log
22
3-
Revision ID: b76f56db845a
3+
Revision ID: 8c4306d66631
44
Revises: 7e8956a72cf2
5-
Create Date: 2020-09-05 19:48:20.702598+00:00
5+
Create Date: 2020-09-12 04:55:39.362899+00:00
66
77
"""
88
import sqlalchemy as sa
@@ -11,7 +11,7 @@
1111
from alembic import op
1212

1313
# revision identifiers, used by Alembic.
14-
revision = 'b76f56db845a'
14+
revision = '8c4306d66631'
1515
down_revision = '7e8956a72cf2'
1616
branch_labels = None
1717
depends_on = None
@@ -28,9 +28,7 @@ def upgrade():
2828
nullable=False,
2929
),
3030
sa.Column('qname', sa.String(), nullable=False),
31-
sa.Column(
32-
'retries', sa.SmallInteger(), server_default=sa.text('1'), nullable=True
33-
),
31+
sa.Column('status', sa.String(), nullable=False),
3432
sa.Column(
3533
'queued',
3634
sa.DateTime(timezone=True),
@@ -43,9 +41,10 @@ def upgrade():
4341
server_default=sa.text('current_timestamp'),
4442
nullable=False,
4543
),
46-
sa.Column('status', sa.String(), nullable=False),
44+
sa.Column('initialized', sa.DateTime(timezone=True), nullable=True),
45+
sa.Column('logged', sa.DateTime(timezone=True), nullable=True),
4746
sa.Column(
48-
'workflow',
47+
'tasks',
4948
postgresql.JSONB(astext_type=sa.Text()),
5049
server_default=sa.text("'{}'::jsonb"),
5150
nullable=True,
@@ -65,14 +64,10 @@ def upgrade():
6564
op.create_index(
6665
op.f('ix_postq_job_queued'), 'job', ['queued'], unique=False, schema='postq'
6766
)
68-
op.create_index(
69-
op.f('ix_postq_job_retries'), 'job', ['retries'], unique=False, schema='postq'
70-
)
7167
op.create_table(
7268
'job_log',
7369
sa.Column('id', postgresql.UUID(), nullable=False),
7470
sa.Column('qname', sa.String(), nullable=False),
75-
sa.Column('retries', sa.SmallInteger(), nullable=True),
7671
sa.Column('queued', sa.DateTime(timezone=True), nullable=False),
7772
sa.Column('scheduled', sa.DateTime(timezone=True), nullable=False),
7873
sa.Column('initialized', sa.DateTime(timezone=True), nullable=True),
@@ -84,7 +79,7 @@ def upgrade():
8479
),
8580
sa.Column('status', sa.String(), nullable=False),
8681
sa.Column(
87-
'workflow',
82+
'tasks',
8883
postgresql.JSONB(astext_type=sa.Text()),
8984
server_default=sa.text("'{}'::jsonb"),
9085
nullable=True,
@@ -103,7 +98,6 @@ def upgrade():
10398
def downgrade():
10499
# ### commands auto generated by Alembic - please adjust! ###
105100
op.drop_table('job_log', schema='postq')
106-
op.drop_index(op.f('ix_postq_job_retries'), table_name='job', schema='postq')
107101
op.drop_index(op.f('ix_postq_job_queued'), table_name='job', schema='postq')
108102
op.drop_index(op.f('ix_postq_job_qname'), table_name='job', schema='postq')
109103
op.drop_table('job', schema='postq')

postq/executors.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ def executor(
3131
task.results = process.stdout.decode() # TODO: I'm not happy with forcing UTF-8
3232
task.errors = process.stderr.decode()
3333
if process.returncode > 0:
34-
task.status = Status.error.name
34+
task.status = str(Status.error)
3535
elif task.errors:
36-
task.status = Status.warning.name
36+
task.status = str(Status.warning)
3737
else:
38-
task.status = Status.success.name
38+
task.status = str(Status.success)
3939

4040
send_data(address, task.dict())
4141

0 commit comments

Comments
 (0)