事实证明,自动重新加载程序是罪魁祸首。事实证明,自动重新加载过程与原始过程具有相同的参数,并经过相同的初始化过程。解决方案是仅在自动重载程序产生的进程中未运行服务器前代码时才执行该代码,可以通过环境变量检测到该代码:
import os
from django.contrib.staticfiles.management.commands.runserver import Command as RunserverCommand
class Command(RunserverCommand):
def run(self, *args, **options):
if os.environ.get('RUN_MAIN') != 'true':
self.stdout.write('About to start running on ' + self.addr)
super(Command, self).run(*args, **options)