[+] use timezone for timestamp

This commit is contained in:
Siarhei Siniak 2025-07-11 11:34:11 +03:00
parent 83ac7c3a66
commit 3cde36d8a7
3 changed files with 49 additions and 3 deletions

@ -0,0 +1,38 @@
"""add timezone
Revision ID: 729afc7194c9
Revises: eb63f793db3a
Create Date: 2025-07-11 11:30:06.246152
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic.
revision: str = '729afc7194c9'
down_revision: Union[str, Sequence[str], None] = 'eb63f793db3a'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('tickers_ticker', 'timestamp',
existing_type=postgresql.TIMESTAMP(),
type_=sa.DateTime(timezone=True),
existing_nullable=False)
# ### end Alembic commands ###
def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('tickers_ticker', 'timestamp',
existing_type=sa.DateTime(timezone=True),
type_=postgresql.TIMESTAMP(),
existing_nullable=False)
# ### end Alembic commands ###

@ -10,6 +10,7 @@ from sqlalchemy import (
String,
ForeignKey,
Numeric,
DateTime,
UniqueConstraint,
)
@ -34,7 +35,9 @@ class Ticker(Base):
'tickers_market.id',
ondelete='CASCADE',
))
timestamp: Mapped[datetime.datetime] = mapped_column()
timestamp: Mapped[datetime.datetime] = mapped_column(
DateTime(timezone=True,)
)
value: Mapped[decimal.Decimal] = mapped_column(Numeric(
precision=32, scale=6,
))

@ -3,6 +3,7 @@ import asyncio
import decimal
import logging
import datetime
# import datetime.timezone
import pydantic
import json
@ -96,7 +97,9 @@ class Emcont:
store_timeout: float | int = 0.5,
request_period: float | int = 1,
) -> None:
last_retrieval = datetime.datetime.now()
last_retrieval = datetime.datetime.now(
tz=datetime.timezone.utc,
)
assert request_timeout >= 0
assert store_timeout >= 0
@ -138,7 +141,9 @@ class Emcont:
nonlocal next_retrieval
return (
next_retrieval - datetime.datetime.now()
next_retrieval - datetime.datetime.now(
tz=datetime.timezone.utc,
)
).total_seconds()
while True: