Я пытаюсь запустить скрипт Python как задачу сельдерея с Django. Проблема, с которой я сталкиваюсь, заключается в том, что задача считает ее завершенной, как только скрипт начинает работать. Первоначально я использовал subprocess.popen() в файле tasks.py, но понял, что это будет означать, что задача будет завершена, как только будет введена команда popen(). Я изменил свой код tasks.py, чтобы вызвать функцию в моем скрипте Python, которая запускает скрипт; однако это по-прежнему выполняется, как если бы задача была немедленно завершена. Я смущен, потому что в цветке говорится, что задача выполнена, но в журнале сельдерея он выводит данные журнала, определенные в сценарии, который я запускаю. Я нашел следующее связанный пост. Я считаю, что следую его предложению выполнить функцию python из tasks.py.
Задачи.py:
def exe(workDir, cancelRun):
sys.path.append(workDir)
import run
if cancelRun=='True':
task_id=exe.request.id
revoke(task_id,terminate=True)
else:
run.runModel(workDir)
task_id=exe.request.id
return task_id
Код функции runModel:
def runModel(scendir):
fullpath=scendir+'/run.py'
os.chdir(scendir)
p=Process(target=myMain,args=(scendir,))
p.start()
p.join()