- should avoid gunicorn worker timeouts for long running migrations, also fixes #2439 - add main_migrations as entrypoint to just run db migrations, using existing init_ops() call - first run 'migrations' container with same resources as 'app' and 'op' - additional typing for initializing db - cleanup unused code related to running only once, waiting for db to be ready - fixes #2447
133 lines
3.1 KiB
Python
133 lines
3.1 KiB
Python
"""shared helper to initialize ops classes"""
|
|
|
|
from typing import Tuple
|
|
from motor.motor_asyncio import AsyncIOMotorClient, AsyncIOMotorDatabase
|
|
|
|
from .crawlmanager import CrawlManager
|
|
from .db import init_db
|
|
from .emailsender import EmailSender
|
|
|
|
from .background_jobs import BackgroundJobOps
|
|
from .basecrawls import BaseCrawlOps
|
|
from .colls import CollectionOps
|
|
from .crawls import CrawlOps
|
|
from .crawlconfigs import CrawlConfigOps
|
|
from .invites import InviteOps
|
|
from .orgs import OrgOps
|
|
from .pages import PageOps
|
|
from .profiles import ProfileOps
|
|
from .storages import StorageOps
|
|
from .uploads import UploadOps
|
|
from .users import UserManager
|
|
from .webhooks import EventWebhookOps
|
|
|
|
|
|
# pylint: disable=too-many-locals
|
|
def init_ops() -> Tuple[
|
|
OrgOps,
|
|
CrawlConfigOps,
|
|
BaseCrawlOps,
|
|
CrawlOps,
|
|
UploadOps,
|
|
PageOps,
|
|
CollectionOps,
|
|
ProfileOps,
|
|
StorageOps,
|
|
BackgroundJobOps,
|
|
EventWebhookOps,
|
|
UserManager,
|
|
InviteOps,
|
|
AsyncIOMotorClient,
|
|
AsyncIOMotorDatabase,
|
|
]:
|
|
"""Initialize and return ops classes"""
|
|
email = EmailSender()
|
|
|
|
dbclient, mdb = init_db()
|
|
|
|
invite_ops = InviteOps(mdb, email)
|
|
|
|
user_manager = UserManager(mdb, email, invite_ops)
|
|
|
|
org_ops = OrgOps(mdb, invite_ops, user_manager)
|
|
|
|
event_webhook_ops = EventWebhookOps(mdb, org_ops)
|
|
|
|
crawl_manager = CrawlManager()
|
|
|
|
storage_ops = StorageOps(org_ops, crawl_manager, mdb)
|
|
|
|
background_job_ops = BackgroundJobOps(
|
|
mdb, email, user_manager, org_ops, crawl_manager, storage_ops
|
|
)
|
|
|
|
profile_ops = ProfileOps(
|
|
mdb, org_ops, crawl_manager, storage_ops, background_job_ops
|
|
)
|
|
|
|
crawl_config_ops = CrawlConfigOps(
|
|
dbclient,
|
|
mdb,
|
|
user_manager,
|
|
org_ops,
|
|
crawl_manager,
|
|
profile_ops,
|
|
)
|
|
|
|
coll_ops = CollectionOps(mdb, storage_ops, org_ops, event_webhook_ops)
|
|
|
|
base_crawl_init = (
|
|
mdb,
|
|
user_manager,
|
|
org_ops,
|
|
crawl_config_ops,
|
|
coll_ops,
|
|
storage_ops,
|
|
event_webhook_ops,
|
|
background_job_ops,
|
|
)
|
|
|
|
base_crawl_ops = BaseCrawlOps(*base_crawl_init)
|
|
|
|
crawl_ops = CrawlOps(crawl_manager, *base_crawl_init)
|
|
|
|
upload_ops = UploadOps(*base_crawl_init)
|
|
|
|
page_ops = PageOps(
|
|
mdb, crawl_ops, org_ops, storage_ops, background_job_ops, coll_ops
|
|
)
|
|
|
|
base_crawl_ops.set_page_ops(page_ops)
|
|
crawl_ops.set_page_ops(page_ops)
|
|
upload_ops.set_page_ops(page_ops)
|
|
|
|
background_job_ops.set_ops(crawl_ops, profile_ops)
|
|
|
|
org_ops.set_ops(base_crawl_ops, profile_ops, coll_ops, background_job_ops, page_ops)
|
|
|
|
user_manager.set_ops(org_ops, crawl_config_ops, base_crawl_ops)
|
|
|
|
background_job_ops.set_ops(base_crawl_ops, profile_ops)
|
|
|
|
crawl_config_ops.set_coll_ops(coll_ops)
|
|
|
|
coll_ops.set_page_ops(page_ops)
|
|
|
|
return (
|
|
org_ops,
|
|
crawl_config_ops,
|
|
base_crawl_ops,
|
|
crawl_ops,
|
|
upload_ops,
|
|
page_ops,
|
|
coll_ops,
|
|
profile_ops,
|
|
storage_ops,
|
|
background_job_ops,
|
|
event_webhook_ops,
|
|
user_manager,
|
|
invite_ops,
|
|
dbclient,
|
|
mdb,
|
|
)
|