如何解决如何在 Django 应用中运行终端命令?
每当我访问 Django 应用程序中的索引页面时,我都想执行一个终端命令。我已经在 Django 应用程序之外完成了它并且它起作用了。在我运行的 Django 应用程序之外:
import subprocess
subprocess.run('python hello.py')
包含常规打印语句 print('Hello') 的 hello.py 文件,在我使用上述脚本运行命令的终端中,它当然打印“Hello”就像一个魅力。
我的问题是,是否可以在我的 Django 应用中运行类似下面的程序?
def index(request):
subprocess.run('python manage.py process_tasks')
today = datetime.now()
schedule_time = datetime(year=today.year,month=today.month,day=today.day,hour=today.hour + 5,minute=today.minute + 1,tzinfo=pytz.UTC)
run_until = datetime(year=today.year,tzinfo=pytz.UTC)
print_hello(schedule=schedule_time,repeat=20,repeat_until=run_until)
return HttpResponse(f'Background task running...')
通过在视图函数中包含这个命令subprocess.run('python manage.py process_tasks'),它至少可以消除我打开另一个终端来运行python manage.py process_tasks 让应用在后台为我工作。
应用程序成功进入页面,但后台任务没有启动,终端显示ModuleNotFoundError:没有名为“background_task”的模块。这是带有错误消息的图像,以便更好地理解。谢谢!
解决方法
我发现了问题...在缩小错误范围之后。它试图在 PATH 中使用 python.exe 而不是虚拟环境。
index
完美地执行了任务!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。