perf: 优化 api sql 查询

This commit is contained in:
ibuler
2023-02-07 16:21:26 +08:00
parent 47c5f18c6e
commit e7202ac984
13 changed files with 150 additions and 104 deletions

View File

@@ -1,9 +1,10 @@
#!/usr/bin/env python
#
import argparse
import os
import sys
import django
import argparse
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
APPS_DIR = os.path.join(BASE_DIR, 'apps')
@@ -17,7 +18,6 @@ from resources.users import UserGroupGenerator, UserGenerator
from resources.perms import AssetPermissionGenerator
from resources.terminal import CommandGenerator, SessionGenerator
resource_generator_mapper = {
'asset': AssetsGenerator,
'platform': PlatformGenerator,
@@ -26,7 +26,8 @@ resource_generator_mapper = {
'user_group': UserGroupGenerator,
'asset_permission': AssetPermissionGenerator,
'command': CommandGenerator,
'session': SessionGenerator
'session': SessionGenerator,
'all': None
# 'stat': StatGenerator
}
@@ -36,16 +37,24 @@ def main():
parser.add_argument(
'resource', type=str,
choices=resource_generator_mapper.keys(),
default='all',
help="resource to generate"
)
parser.add_argument('-c', '--count', type=int, default=100)
parser.add_argument('-c', '--count', type=int, default=10000)
parser.add_argument('-b', '--batch_size', type=int, default=100)
parser.add_argument('-o', '--org', type=str, default='')
args = parser.parse_args()
resource, count, batch_size, org_id = args.resource, args.count, args.batch_size, args.org
generator_cls = resource_generator_mapper[resource]
generator = generator_cls(org_id=org_id, batch_size=batch_size)
generator.generate(count)
generator_cls = []
if resource == 'all':
generator_cls = resource_generator_mapper.values()
else:
generator_cls.push(resource_generator_mapper[resource])
for _cls in generator_cls:
generator = _cls(org_id=org_id, batch_size=batch_size)
generator.generate(count)
if __name__ == '__main__':

View File

@@ -1,11 +1,11 @@
from random import choice
import random
from random import choice
import forgery_py
from .base import FakeDataGenerator
from assets.models import *
from assets.const import AllTypes
from assets.models import *
from .base import FakeDataGenerator
class NodesGenerator(FakeDataGenerator):
@@ -59,11 +59,11 @@ class AssetsGenerator(FakeDataGenerator):
assets = []
for i in batch:
ip = forgery_py.internet.ip_v4()
address = forgery_py.internet.ip_v4()
hostname = forgery_py.email.address().replace('@', '.')
hostname = f'{hostname}-{ip}'
hostname = f'{hostname}-{address}'
data = dict(
ip=ip,
address=address,
name=hostname,
platform_id=choice(self.platform_ids),
created_by='Fake',