1

Gevent を Django フレームワークと統合する方法、統合のために Settings.py および wsgi.py ファイルで変更する必要がある設定。

Django から gevent http サーバー (ポート 8000) と gevent Web ソケット サーバー (ポート 9000) を起動します。

4

1 に答える 1

2

最も簡単な方法は、 Gunicornを使用して、gevent ワーカー クラスを使用するように指示することです。Gunicorn のドキュメントはかなり良いです。Django 1.4 以降の場合、Gunicorn を起動するための推奨される方法は、次のように WSGI インターフェイスを呼び出すことです。

gunicorn --worker-class gevent wsgi:application

Gunicorn のすべての優れた機能 (ダウンタイムのないアップグレードのための適切な再起動など) を気にしない場合は、gevent wsgi サーバーを直接使用できます。アップグレード中にしばらくダウンする可能性がある、重要でない Web サイトのメモリを節約するために、私はこれを自分で行います。これは私の「run_gevent.py」ファイルです。理解するのはかなり簡単です。

import gevent.monkey; gevent.monkey.patch_all()
import os, socket
from gevent.socket import socket as gsocket
from gevent.pywsgi import WSGIServer
from django.core.handlers.wsgi import WSGIHandler

script_dir = os.path.dirname(os.path.abspath(__file__))
pid_filename = os.path.join(script_dir, 'server.pid')
socket_filename = os.path.join(script_dir, 'server.sock')

pidfile = open(pid_filename, 'w')
pidfile.write(str(os.getpid()) + str('\n'))
pidfile.close()

server_socket = gsocket(socket.AF_UNIX, socket.SOCK_STREAM)
try:
    os.remove(socket_filename)
except OSError:
    pass
server_socket.bind(socket_filename)
server_socket.listen(256)

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
server = WSGIServer(listener = server_socket, application = WSGIHandler(), log = None)
server.serve_forever(stop_timeout = 3)
于 2013-02-21T21:15:49.837 に答える