0

私はDjangoを使用してWebサイトで作業していますが、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

ここに示すように、ソケットモジュールを使用して、OSにポートを認識させ、ファブリックがどちらを選択したかを通知することができます。

于 2012-07-17T20:23:23.770 に答える