2016-07-23 18 views
1

私はDjangoを使用していますが、マシンにprotocがインストールされています。これが可能であるrunserverでDjangoのprotoファイルをコンパイルする

./manage.py runserver ... 

:私は、サーバーを起動したとき、私は自動的にすべてのアプリケーションディレクトリで見つかったプロトファイルのすべてをコンパイルしたいと思いますか?

答えて

0

私はすべてprotocに精通していないですが、あなたは何runserverを行うことができます。デフォルトを上書きするには、カスタムrunserverdjango 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やものを失うことに注意してください。

また、とにかく終了する場合は、プロセスを強制終了する必要はありません。

関連する問題