|
28 | 28 |
|
29 | 29 | class SiteManager:
|
30 | 30 | """
|
31 |
| - Manages the preparation and serving of the website. |
| 31 | + Manages the preparation and serving of the website for local use. |
32 | 32 |
|
33 |
| - Handles both development and production environments. |
| 33 | + This class is used solely for setting up the development |
| 34 | + environment. In production, gunicorn is invoked directly |
| 35 | + and migrations are handled in an init container. |
34 | 36 |
|
35 | 37 | Usage:
|
36 | 38 | manage.py run [option]...
|
37 | 39 |
|
38 | 40 | Options:
|
39 |
| - --debug Runs a development server with debug mode enabled. |
40 | 41 | --silent Sets minimal console output.
|
41 | 42 | --verbose Sets verbose console output.
|
42 | 43 | """
|
43 | 44 |
|
44 | 45 | def __init__(self, args: list[str]):
|
45 |
| - self.debug = "--debug" in args |
46 | 46 | self.silent = "--silent" in args
|
47 | 47 |
|
48 | 48 | if self.silent:
|
49 | 49 | self.verbosity = 0
|
50 | 50 | else:
|
51 | 51 | self.verbosity = 2 if "--verbose" in args else 1
|
52 | 52 |
|
53 |
| - if self.debug: |
54 |
| - os.environ.setdefault("DEBUG", "true") |
55 |
| - print("Starting in debug mode.") |
| 53 | + os.environ.setdefault("DEBUG", "true") |
| 54 | + print("Starting in debug mode.") |
56 | 55 |
|
57 | 56 | @staticmethod
|
58 | 57 | def create_superuser() -> None:
|
@@ -104,53 +103,31 @@ def prepare_environment(self) -> None:
|
104 | 103 | call_command("migrate", verbosity=self.verbosity)
|
105 | 104 |
|
106 | 105 | def prepare_server(self) -> None:
|
107 |
| - """Preform runserver-specific preparation tasks.""" |
108 |
| - if self.debug: |
109 |
| - # In Production, collectstatic is ran in the Docker image |
110 |
| - print("Collecting static files.") |
111 |
| - call_command( |
112 |
| - "collectstatic", |
113 |
| - interactive=False, |
114 |
| - clear=True, |
115 |
| - verbosity=self.verbosity - 1 |
116 |
| - ) |
| 106 | + """Perform debug runserver-specific preparation tasks.""" |
| 107 | + print("Collecting static files.") |
| 108 | + call_command( |
| 109 | + "collectstatic", |
| 110 | + interactive=False, |
| 111 | + clear=True, |
| 112 | + verbosity=self.verbosity - 1 |
| 113 | + ) |
117 | 114 |
|
118 |
| - self.set_dev_site_name() |
119 |
| - self.create_superuser() |
| 115 | + self.set_dev_site_name() |
| 116 | + self.create_superuser() |
120 | 117 |
|
121 |
| - def run_server(self) -> None: |
122 |
| - """Prepare and run the web server.""" |
| 118 | + def run_debug(self) -> None: |
| 119 | + """Prepare and run the debug web server.""" |
123 | 120 | in_reloader = os.environ.get('RUN_MAIN') == 'true'
|
124 | 121 |
|
125 | 122 | # Prevent preparing twice when in dev mode due to reloader
|
126 |
| - if not self.debug or in_reloader: |
| 123 | + if in_reloader: |
127 | 124 | self.prepare_environment()
|
128 | 125 | self.prepare_server()
|
129 | 126 |
|
130 | 127 | print("Starting server.")
|
131 | 128 |
|
132 | 129 | # Run the development server
|
133 |
| - if self.debug: |
134 |
| - call_command("runserver", "0.0.0.0:8000") |
135 |
| - return |
136 |
| - |
137 |
| - # Import gunicorn only if we aren't in debug mode. |
138 |
| - import gunicorn.app.wsgiapp |
139 |
| - |
140 |
| - # Patch the arguments for gunicorn |
141 |
| - sys.argv = [ |
142 |
| - "gunicorn", |
143 |
| - "--preload", |
144 |
| - "-b", "0.0.0.0:8000", |
145 |
| - "pydis_site.wsgi:application", |
146 |
| - "-w", "2", |
147 |
| - "--statsd-host", "graphite.default.svc.cluster.local:8125", |
148 |
| - "--statsd-prefix", "site", |
149 |
| - "--config", "file:gunicorn.conf.py" |
150 |
| - ] |
151 |
| - |
152 |
| - # Run gunicorn for the production server. |
153 |
| - gunicorn.app.wsgiapp.run() |
| 130 | + call_command("runserver", "0.0.0.0:8000") |
154 | 131 |
|
155 | 132 | def run_tests(self) -> None:
|
156 | 133 | """Prepare and run the test suite."""
|
@@ -190,7 +167,7 @@ def main() -> None:
|
190 | 167 | if len(sys.argv) > 1 and sys.argv[1] in ("run", "test"):
|
191 | 168 | manager = SiteManager(sys.argv)
|
192 | 169 | if sys.argv[1] == "run":
|
193 |
| - manager.run_server() |
| 170 | + manager.run_debug() |
194 | 171 | elif sys.argv[1] == "test":
|
195 | 172 | manager.run_tests()
|
196 | 173 |
|
|
0 commit comments