Как импортировать модели Django в сценарий, запущенный с помощью Popen()
Мой вопрос очень похож на этот . Разница в моем случае заключается в том, что скрипт python, который я хочу запустить как подпроцесс (listener1.py), является частью моего проекта, только на другом приложении.
Вот структура моего проекта:
my_project
├── my_app1 #This app contains models,views etc.
│ ├── models.py
│ └── apps.py
│ └── ...
├── logic_app #This app contains several unrelated python scripts
│ └── ManagerScript.py
│ └── listener1.py
│ └── ...
В моем apps.py:
class MyAppConfig(AppConfig):
name = 'my_app1'
def ready(self):
#Once app is ready, start the following script as a thread
thread = Thread(target=ManagerScript.main)
thread.start()
В ManagerScript.py:
#This thread is responsible for starting listener1.py as a Subprocess
#(because this is a thread I can successfully import my Models here)
#from my_app1 import models #This would work!
tmp = ['python3','path/to/listener1.py']
Popen(tmp, preexec_fn=os.setpgrp)
В listener1.py:
from my_app1 import models #Does not work!
...
Мой вопрос в том, что учитывая тот факт, что подпроцесс listener1.py находится в папке logic_app, как я могу импортировать мой Models в сценарий listener1.py без использования команд управления ? (Потому что их использование потребует изменения моей текущей структуры проекта)
Вы можете запускать их через оболочку Django. Не записывая их как команду.
Python manage.py shell
exec(open(<path-to-file>).read()))