django - Django manage.py - 区分 runserver 和/或从其他命令上下文运行的实际服务器?
问题描述
假设我有一些代码在很多 Django管理/维护命令urls.py
中确实不应该运行。除了直接和明确地检查之外,有没有办法知道代码正在加载的上下文?sys.argv
...
def setup_at_startup():
"""code here would definitely fail on python manage.py makemigrations/migrate
let's suppose it's runtime introspection code to discover some services but doesn't run well if django admin tables dont exist
"""
#pseudo-code
if django.command in ("makemigrations", "migrate", "<others>"):
return
do-code-that-blows-up
#gets run at import urls.py time.
setup_at_startup()
...
什么是一个很好的便携式测试方法,包括通过 gunicorn 等访问 Django?
另外,考虑到这个导入是由 Django 发起的django.settings
,从我的代码的 POV 来看,很可能还不可用。