Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

_wsgi.py 3.7 KB

You have to be logged in to leave a comment. Sign In
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
  1. import json
  2. import os
  3. import argparse
  4. import logging
  5. import logging.config
  6. logging.config.dictConfig({
  7. "version": 1,
  8. "formatters": {
  9. "standard": {
  10. "format": "[%(asctime)s] [%(levelname)s] [%(name)s::%(funcName)s::%(lineno)d] %(message)s"
  11. }
  12. },
  13. "handlers": {
  14. "console": {
  15. "class": "logging.StreamHandler",
  16. "level": "DEBUG",
  17. "stream": "ext://sys.stdout",
  18. "formatter": "standard"
  19. }
  20. },
  21. "root": {
  22. "level": "ERROR",
  23. "handlers": [
  24. "console"
  25. ],
  26. "propagate": True
  27. }
  28. })
  29. from label_studio_ml.api import init_app
  30. from ls_model_server import SquirrelDetectorLSModel
  31. _DEFAULT_CONFIG_PATH = os.path.join(os.path.dirname(__file__), 'config.json')
  32. def get_kwargs_from_config(config_path=_DEFAULT_CONFIG_PATH):
  33. if not os.path.exists(config_path):
  34. return dict()
  35. with open(config_path) as f:
  36. config = json.load(f)
  37. assert isinstance(config, dict)
  38. return config
  39. if __name__ == "__main__":
  40. parser = argparse.ArgumentParser(description='Label studio')
  41. parser.add_argument(
  42. '-p', '--port', dest='port', type=int, default=9090,
  43. help='Server port')
  44. parser.add_argument(
  45. '--host', dest='host', type=str, default='0.0.0.0',
  46. help='Server host')
  47. parser.add_argument(
  48. '--kwargs', '--with', dest='kwargs', metavar='KEY=VAL', nargs='+', type=lambda kv: kv.split('='),
  49. help='Additional LabelStudioMLBase model initialization kwargs')
  50. parser.add_argument(
  51. '-d', '--debug', dest='debug', action='store_true',
  52. help='Switch debug mode')
  53. parser.add_argument(
  54. '--log-level', dest='log_level', choices=['DEBUG', 'INFO', 'WARNING', 'ERROR'], default=None,
  55. help='Logging level')
  56. parser.add_argument(
  57. '--model-dir', dest='model_dir', default=os.path.dirname(__file__),
  58. help='Directory where models are stored (relative to the project directory)')
  59. parser.add_argument(
  60. '--check', dest='check', action='store_true',
  61. help='Validate model instance before launching server')
  62. args = parser.parse_args()
  63. # setup logging level
  64. if args.log_level:
  65. logging.root.setLevel(args.log_level)
  66. def isfloat(value):
  67. try:
  68. float(value)
  69. return True
  70. except ValueError:
  71. return False
  72. def parse_kwargs():
  73. param = dict()
  74. for k, v in args.kwargs:
  75. if v.isdigit():
  76. param[k] = int(v)
  77. elif v == 'True' or v == 'true':
  78. param[k] = True
  79. elif v == 'False' or v == 'false':
  80. param[k] = False
  81. elif isfloat(v):
  82. param[k] = float(v)
  83. else:
  84. param[k] = v
  85. return param
  86. kwargs = get_kwargs_from_config()
  87. if args.kwargs:
  88. kwargs.update(parse_kwargs())
  89. if args.check:
  90. print('Check "' + SquirrelDetectorLSModel.__name__ + '" instance creation..')
  91. model = SquirrelDetectorLSModel(**kwargs)
  92. app = init_app(
  93. model_class=SquirrelDetectorLSModel,
  94. model_dir=os.environ.get('MODEL_DIR', args.model_dir),
  95. redis_queue=os.environ.get('RQ_QUEUE_NAME', 'default'),
  96. redis_host=os.environ.get('REDIS_HOST', 'localhost'),
  97. redis_port=os.environ.get('REDIS_PORT', 6379),
  98. **kwargs
  99. )
  100. app.run(host=args.host, port=args.port, debug=args.debug)
  101. else:
  102. # for uWSGI use
  103. app = init_app(
  104. model_class=SquirrelDetectorLSModel,
  105. model_dir=os.environ.get('MODEL_DIR', os.path.dirname(__file__)),
  106. redis_queue=os.environ.get('RQ_QUEUE_NAME', 'default'),
  107. redis_host=os.environ.get('REDIS_HOST', 'localhost'),
  108. redis_port=os.environ.get('REDIS_PORT', 6379)
  109. )
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...