Basics#

Here are described basics of the app architecture.

Celery#

Beat logs in error level mode and has no PID file (--pidfile=). No PID file is because when celery hangs up the PID file is kept on the disk and prevents to run new beat process.

Worker runs in one thread (-c is set to 1) so all tasks are consumed in series not in paralel. Also each worker is replaced with a new one after 3 tasks (--max-tasks-child=3).

Meta#

core.Meta is a special model for application metadata. They are stored and readed from various places of application.

Current metada is:

  • LAST_PRICE_UPDATE - last date + time when shares/coins data were updated - fetched from the internet. Is printed as tooltip on application name in the app top bar.

Database#

Model managers#

Application offers following model managers that extend classic Django ORM manager.

+-------------------+      +------------------+
|   PandasManager   | <--- |   UsersManager   |
+-------------------+      +------------------+
                       ^
                       |   +-----------------+
                       --- |   UserManager   |
                           +-----------------+