0

我正在一个使用 Django 的网站上工作,我也有 Fabric,这对于编写我和其他开发人员使用的一些代码块非常有用。我对所有这些(以及一般的linux,tbh)都很陌生,所以我有想法,但我不知道它们如何(或是否)它们是可能的。具体来说,我想编写一个脚本来在我们用于测试的特定端口上启动服务器。手动,我会运行

python ~/project/manage.py runserver 0.0.0.0:8080

但这会变老。要手动实现该特定命令,我的 fabfile 中有以下代码:

def start8080():
    local("python ~/project/manage.py runserver 0.0.0.0:8080")

这可行,但我不是唯一使用该端口进行测试的人,而且 ~/project/ 不是唯一需要使用类似脚本的项目。有没有一种方法可以从您正在使用的目录中搜索第一个 manage.py 的树,然后从那里运行相同的命令?

4

2 回答 2

1

Farbic 函数允许您使用参数:

@task   #not bad to use once your fabfile is big by using helper functions
def runserver(project_path, port=8000):
    run("python %s/manage.py runserver 0.0.0.0:%s" % (project_path,port))

你会像这样使用它:

fab runserver:/home/project,8080

您还可以通过创建一个为每个项目选择一个端口的任务来简化它,尽管所有可用的项目及其路径都必须在那里定义。那么它可以很简单:

fab runserver:myprojectname

当然,您还可以实现@morgan 的答案,使脚本检查端口是否打开并自动分配一个空闲端口。

于 2012-07-18T09:06:23.363 回答
0

您可以使用 socket 模块,如此处所示让操作系统找出您的端口,然后 Fabric 让您知道它选择了哪个。

于 2012-07-17T20:23:23.770 回答