我需要在devserver启动时执行一些代码。
目前我只是将代码放入models.py
我的一个应用程序中。
此解决方案有副作用:代码在使用其他管理命令时执行,我想避免使用。
更新:这将是可分发应用程序的一部分。我不希望用户(实际上是开发人员)运行任何其他命令。他们应该只能使用runserver
命令。我也不想用我自己的实现覆盖runserver
命令。
已更新:我的models.py
如下所示:
from django.conf import settings
if settings.DEBUG: # I actually use another setting here, but it does not matter
run_my_code_in_a_daemon_thread()
我在这个文件中没有任何实际模型。因此,我的代码只执行一次:当Django从INSTALLED_APPS扫描所有应用程序并导入其models.py
时。
答案 0 :(得分:2)
自定义bash(python)启动器会很好。或者您可以自己编写management command。
答案 1 :(得分:1)
您只需更新本地manage.py
即可?检查传递的参数(您对runserver
感兴趣,如果确实如此,请从那里执行您想要的代码。这样的事情:
if __name__ == "__main__":
if sys.argv[1] == 'runserver':
# Your custom code
execute_manager(settings)