2016-08-10 16 views
3

私のdjangoプロジェクトの1つは、アシスタント(gunicorn & nginx)を使用して展開されています。ワーカープロセスが同期実行されている非同期gunicornワーカーのためのeventletライブラリの使用方法

bind = '127.0.0.1:8001' 
backlog = 2048 

workers = 8 
worker_class = 'sync' 
worker_connections = 1000 
timeout = 300 
keepalive = 2 

spew = False 

daemon = False 
pidfile = None 
umask = 0 
user = None 
group = None 
tmp_upload_dir = None 

loglevel = 'info' 
errorlog = '/var/log/error.log' 
accesslog = '/var/log/access.log' 

proc_name = None 

def pre_fork(server, worker): 
    pass 

def pre_exec(server): 
    server.log.info("Forked child, re-executing.") 

def when_ready(server): 
    server.log.info("Server is ready. Spawning workers") 

def worker_int(worker): 
    worker.log.info("worker received INT or QUIT signal") 


    ## get traceback info 
    import threading, sys, traceback 
    id2name = dict([(th.ident, th.name) for th in threading.enumerate()]) 
    code = [] 
    for threadId, stack in sys._current_frames().items(): 
     code.append("\n# Thread: %s(%d)" % (id2name.get(threadId,""), 
      threadId)) 
     for filename, lineno, name, line in traceback.extract_stack(stack): 
      code.append('File: "%s", line %d, in %s' % (filename, 
       lineno, name)) 
      if line: 
       code.append(" %s" % (line.strip())) 
    worker.log.debug("\n".join(code)) 

def worker_abort(worker): 
    worker.log.info("worker received SIGABRT signal") 

:以下は、gunicorn構成です。私は、このサーバー上で毎分多くのリクエストがあるので、同時に実行するようにします。

worker_class = eventlet 

しかし、今、私は無知だ:研究では、私は私がようeventletするworker_classを変更する必要がconcurrency.Forためグリーンスレッドこれを使用していますeventletなどのPythonライブラリを使用することができることを見つけるようになりました。私はこのプロジェクトのための非同期の緑のスレッドを実装する方法を取得しません。これは愚かな質問かもしれませんが、私は本当にいくつかの助けが必要です。

ありがとうございます。

+0

私はここでいくつかの洞察を得ることができますか?してください... –

答えて

1

あなたはすでに必要な作業をすべて完了しています。 worker_class = eventletまたはgunicorn -k eventletは、HTTP要求ハンドラを同時に実行するのに十分です。そして、ハンドラでスリープまたはIOを伴う多くの同時リクエストを処理できます。

+0

ええ、その仕事:D:Dとにかく感謝:) –

関連する問題