2012-05-29 5 views
0

Я пытался узнать о spooler mechanism из uWSGI, и по этой причине я написал небольшое фиктивное веб-приложение с Django (версия 1.3.1), и оно работает на последних стабильная версия nginx. Все работает так, как ожидалось. Тем не менее, в одном из моих взглядов, я посылаю сообщение золотника в контейнер uWSGI и, я получаю следующее сообщение об ошибке:uwsgi не удалось найти функцию спулера

[spooler /private/tmp/receiver pid: 4115] managing request uwsgi_spoolfile_on_ozgurv.local_4165_1_0_1338280641_366596 ... 
unable to find the spooler function, have you loaded it into the spooler process ? 

В моей TestApp/views.py файл:

from django.http import HttpResponse 
from testapp.spool import three_seconds 

def call(request): 
    three_seconds.spool(a=1, b=2) 
    return HttpResponse('spooled') 

В мой TestApp/spool.py файл:

from uwsgidecorators import * 

@spool 
def three_seconds(*args, **kwargs): 
    f = open('/tmp/args.data', 'a') 
    f.write(repr(kwargs) + '\n') 
    f.close() 

Когда я выполнил функцию «вызов», запросив URL/звонок/в браузере, я получаю следующее сообщение об ошибке:

[spooler /private/tmp/receiver pid: 4115] managing request uwsgi_spoolfile_on_ozgurv.local_4165_1_0_1338280641_366596 ... 
unable to find the spooler function, have you loaded it into the spooler process ? 

uWSGI работает со следующими параметрами:

sudo uwsgi --ini ~/uwsgi.ini -b 20000 

И содержание моего uwsgi.ini файла выглядит следующим образом:

[uwsgi] 
socket = 127.0.0.1:8081 
listen = 4096 
master = true 
processes = 4 
pidfile = /var/run/uwsgi.pid 
enable-threads = true 
uid=root 
gid=admin 
single-interpreter = true 
disable-logging = true 
buffer-size= 32768 
reload-on-as = 10240 
reload-on-rss = 512i0 
max-requests = 50000 
pythonpath = /Users/ozgurv/Developer/warehouse 
module = wsgi_handler 

plugins = python27,spooler 
spooler-processes = 1 
spooler = /tmp/receiver 

Я понятия не имею, почему это было жалуясь о функция спулера и почему uwsgi не смог найти. И что означает «вы загрузили его в процесс спулера»? Как можно загрузить функцию спулера в контексте процесса спулера?

ответ

2

использование Спулер-импорт = TestApp/spool.py

Процесс Спулера будет импортировать этот модуль в адресном пространстве процесса

другое решение импортирует модуль во всех процессах uwsgi с

import = testapp/spool.py