1
私はDjangoを使用していますが、マシンにprotoc
がインストールされています。これが可能であるrunserverでDjangoのprotoファイルをコンパイルする
./manage.py runserver ...
:私は、サーバーを起動したとき、私は自動的にすべてのアプリケーションディレクトリで見つかったプロトファイルのすべてをコンパイルしたいと思いますか?
私はDjangoを使用していますが、マシンにprotoc
がインストールされています。これが可能であるrunserverでDjangoのprotoファイルをコンパイルする
./manage.py runserver ...
:私は、サーバーを起動したとき、私は自動的にすべてのアプリケーションディレクトリで見つかったプロトファイルのすべてをコンパイルしたいと思いますか?
私はすべてprotoc
に精通していないですが、あなたは何runserver
を行うことができます。デフォルトを上書きするには、カスタムrunserver
django admin commandを作成する必要があります。ここではサンプルです:
import os
import subprocess
import atexit
import signal
from django.conf import settings
from django.contrib.staticfiles.management.commands.runserver import Command\
as StaticfilesRunserverCommand
class Command(StaticfilesRunserverCommand):
def inner_run(self, *args, **options):
self.start_something()
return super(Command, self).inner_run(*args, **options)
def start_something(self):
self.stdout.write('>>> Starting something')
self.some_process = subprocess.Popen(
'.....',
shell=True,
stdin=subprocess.PIPE,
stdout=self.stdout,
stderr=self.stderr,
)
self.stdout.write('>>> Some process on pid {0}'.format(self.some_process.pid))
def kill_some_process(pid):
self.stdout.write('>>> Closing some process')
os.kill(pid, signal.SIGTERM)
atexit.register(kill_some_process, self.some_process.pid)
あなたはdjango.contrib.staticfiles.management.commands.runserver
からではなくdjango.core.management.base
からこれを導出する必要があるか、あなたはcollectstatic
やものを失うことに注意してください。
また、とにかく終了する場合は、プロセスを強制終了する必要はありません。