我问了之前的question getting a django command to run on a schedule。我得到了一个问题的解决方案,但我仍然希望从管理界面运行我的命令。我遇到的障碍是,一旦进入管理界面,我的自定义管理命令就无法识别。
我将其追溯到__init__.py
实用程序的django/core/management
文件。似乎有一些奇怪的行为正在发生。当服务器首次出现时,将使用核心命令(来自django/core/management/commands
)填充字典变量_commands。来自所有已安装应用程序的自定义管理命令也会被推送到_commands变量中,以获取所有管理命令的整体字典。
不知何故,虽然在服务器启动和django-chronograph从管理界面运行作业之间,_commands变量会丢失自定义命令;字典中唯一的命令是核心命令。我不确定为什么会这样。这可能是路径问题吗?我错过了一些设置吗?这是一款django计时码表特有的问题吗?所以忘记安排。 我如何从django管理员图形界面运行自定义管理命令来证明它确实可以完成?或者更确切地说,我如何确保从所述界面提供自定义管理命令?
答案 0 :(得分:1)
我也在使用django-chronograph
对我来说它运作正常。我也遇到过一次问题,我的自定义命令没有被自动发现功能识别出来。我认为第一个原因是因为自定义命令中有错误。因此,可能需要检查自定义命令是否在命令行中运行时没有问题。
第二个原因确实是一些奇怪的道路问题。我可能会与我的托管服务提供商联系,为您提供解决方案。几天后会回复给你..
答案 1 :(得分:0)
我是汤姆汤姆上面提到的“unix-guy”。
据我记得,计时码表本身存在一些问题,因此最好使用评论中发布的代码tom tom。
文件系统中存储的是django-cronograph(在你的app-folder中,在一个额外的“lib-folder”中还是在你的站点包中?
当你在site-packages中使用它时,或者在你的“global pythonpath”路径中的其他文件夹应该没有问题。
cron-process本身不会使用相同的pythonpath,就像你的django应用程序一样。记住:你通过你的crontab启动cron-process - 对吗?所以有2个不同的进程彼此不“知道”:cron-process和django-process(由webserver初始化)所以我建议通过crontab调用以下脚本并再次导出pythonpath:
#!/bin/bash
PYTHONPATH=/path/to/libs:/path/to/project_root:/path/to/other/libs/used/in/project
export PYTHONPATH
python /path/to/project/manage.py cron
所以cron-started-process与你的项目有相同的pythonpath信息。
来自维也纳/奥地利的greez
贝尔尼