来自管理界面的Django自定义管理命令

时间:2010-12-24 16:34:52

标签: django django-admin django-chronograph

我问了之前的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管理员图形界面运行自定义管理命令来证明它确实可以完成?或者更确切地说,我如何确保从所述界面提供自定义管理命令?

2 个答案:

答案 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

贝尔尼