Django/Python-上载自定义脚本-如何运行它们?

Django/Python-上载自定义脚本-如何运行它们?,python,django,popen,Python,Django,Popen,我有一个解析XML提要的Django项目。问题是,我经常需要编写自定义脚本来解析或下载新客户机的新提要 我认为最好的方法不是每次需要自定义解析/下载管道时都修改Django代码 我的想法是创建一个标准。例如,我通过Admin上传myscript.py,它必须具有带有函数Downloader(self)的类class Downloader(),并且每次必须下载源代码时都会调用此函数 那么最常见的方法是什么呢 我唯一想到的是上传myscript.py,它有if\uuu name\uuu=='\uu

我有一个解析XML提要的
Django
项目。问题是,我经常需要编写自定义脚本来解析或下载新客户机的新提要

我认为最好的方法不是每次需要自定义解析/下载管道时都修改
Django
代码

我的想法是创建一个标准。例如,我通过Admin上传
myscript.py
,它必须具有带有函数
Downloader(self)
的类
class Downloader()
,并且每次必须下载源代码时都会调用此函数

那么最常见的方法是什么呢

我唯一想到的是上传
myscript.py
,它有
if\uuu name\uuu=='\uu main\uuu'
函数,并通过例如
Popen('python filename.py')

型号:

class Source(..):
    custom_downloader = FileField(... # if needed
    ...

您可以将其放置在Django信号的回调中,并在视图中的某个位置发出该信号,也可以使其在芹菜任务中被调用。如果您不想导入它并直接使用它,可以调用它
subprocess.call(“myscript.py”,shell=True)
。有充分的理由不要混淆数据和代码。@klauds。我想做的是不必每次新客户有自己的下载或解析方式的提要时都修改服务器代码。你将如何做到这一点?有一个智能部署系统来快速更改代码。不允许客户上传任何代码。那将是一场安全灾难。不,不,这是我的代码,只有我/系统可以执行它。你可以把它放在Django信号的回调中,然后在视图的某个地方发出信号,或者你可以在芹菜任务中被调用。如果您不想导入它并直接使用它,可以调用它
subprocess.call(“myscript.py”,shell=True)
。有充分的理由不要混淆数据和代码。@klauds。我想做的是不必每次新客户有自己的下载或解析方式的提要时都修改服务器代码。你将如何做到这一点?有一个智能部署系统来快速更改代码。不允许客户上传任何代码。那将是一场安全灾难。不,不,这是我的代码,只有我/系统可以执行它。只是通过管理员上传似乎更好。
class Source(..):
    custom_downloader = FileField(... # if needed
    ...