Gunicorn有一些非常棒的配置。當時瀏覽他們的源代碼的git克隆,並發現了一個example_config.py,它有一個「post_fork」讓我思考。稍微多了一點點後,我想出了這個解決方案。
% gunicorn_django -c path/to/gunicorn_conf.py path/to/settings.py
凡gunicorn_conf.py具有這樣的功能:
def post_fork(server, worker):
server.log.info("%s: Worker spawned" % worker.pid)
from gunicorn.workers.sync import SyncWorker
class SyncWorkerPreload(SyncWorker):
def run(self):
pass
def init_process(self):
super(SyncWorkerPreload, self).init_process()
from django.db.models.loading import get_apps
get_apps()
server.log.info('%s: App loaded' % self.pid)
super(SyncWorkerPreload, self).run()
worker.__class__ = SyncWorkerPreload
希望幫助別人google'ing找到這個提示。
非常棒的Gunicorn足夠靈活,允許這個!
UPDATE:更新的代碼,只需在加載模塊的設置打破,有時由於道路Django的負載模塊我假設......這個新的代碼猴子補丁gunicorn在一個「安全」的時間來加載模塊...希望
更新: gunicorn 0.12.1修正了這個問題