minimal-django: play with uwsgi mules
This commit is contained in:
parent
eef15b1243
commit
ecb6aed21f
|
@ -1,56 +0,0 @@
|
||||||
*** Starting uWSGI 2.0.18-debian (64bit) on [Fri Apr 10 23:25:15 2020] ***
|
|
||||||
compiled with version: 9.3.0 on 23 March 2020 14:44:29
|
|
||||||
os: Linux-5.2.0-2-amd64 #1 SMP Debian 5.2.9-2 (2019-08-21)
|
|
||||||
nodename: revestel
|
|
||||||
machine: x86_64
|
|
||||||
clock source: unix
|
|
||||||
pcre jit disabled
|
|
||||||
detected number of CPU cores: 4
|
|
||||||
current working directory: /home/bdauvergne/wd/eo/misc-bdauvergne/minimal-django
|
|
||||||
detected binary path: /usr/bin/uwsgi-core
|
|
||||||
*** WARNING: you are running uWSGI without its master process manager ***
|
|
||||||
your processes number limit is 29871
|
|
||||||
your memory page size is 4096 bytes
|
|
||||||
detected max file descriptor number: 1024
|
|
||||||
lock engine: pthread robust mutexes
|
|
||||||
thunder lock: disabled (you can enable it with --thunder-lock)
|
|
||||||
uwsgi socket 0 bound to TCP address :3001 fd 3
|
|
||||||
Python version: 3.8.2 (default, Apr 1 2020, 15:52:55) [GCC 9.3.0]
|
|
||||||
*** Python threads support is disabled. You can enable it with --enable-threads ***
|
|
||||||
Python main interpreter initialized at 0x56427be0dc50
|
|
||||||
your server socket listen backlog is limited to 100 connections
|
|
||||||
your mercy for graceful operations on workers is 60 seconds
|
|
||||||
mapped 72920 bytes (71 KB) for 1 cores
|
|
||||||
*** Operational MODE: single process ***
|
|
||||||
WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x56427be0dc50 pid: 12899 (default app)
|
|
||||||
*** uWSGI is running in multiple interpreter mode ***
|
|
||||||
spawned uWSGI worker 1 (and the only) (pid: 12899, cores: 1)
|
|
||||||
*** Starting uWSGI 2.0.18-debian (64bit) on [Fri Apr 10 23:25:27 2020] ***
|
|
||||||
compiled with version: 9.3.0 on 23 March 2020 14:44:29
|
|
||||||
os: Linux-5.2.0-2-amd64 #1 SMP Debian 5.2.9-2 (2019-08-21)
|
|
||||||
nodename: revestel
|
|
||||||
machine: x86_64
|
|
||||||
clock source: unix
|
|
||||||
pcre jit disabled
|
|
||||||
detected number of CPU cores: 4
|
|
||||||
current working directory: /home/bdauvergne/wd/eo/misc-bdauvergne/minimal-django
|
|
||||||
detected binary path: /usr/bin/uwsgi-core
|
|
||||||
*** WARNING: you are running uWSGI without its master process manager ***
|
|
||||||
your processes number limit is 29871
|
|
||||||
your memory page size is 4096 bytes
|
|
||||||
detected max file descriptor number: 1024
|
|
||||||
lock engine: pthread robust mutexes
|
|
||||||
thunder lock: disabled (you can enable it with --thunder-lock)
|
|
||||||
uwsgi socket 0 bound to TCP address :3001 fd 3
|
|
||||||
Python version: 3.8.2 (default, Apr 1 2020, 15:52:55) [GCC 9.3.0]
|
|
||||||
*** Python threads support is disabled. You can enable it with --enable-threads ***
|
|
||||||
Python main interpreter initialized at 0x56045df19c50
|
|
||||||
your server socket listen backlog is limited to 100 connections
|
|
||||||
your mercy for graceful operations on workers is 60 seconds
|
|
||||||
mapped 72920 bytes (71 KB) for 1 cores
|
|
||||||
*** Operational MODE: single process ***
|
|
||||||
WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x56045df19c50 pid: 12998 (default app)
|
|
||||||
*** uWSGI is running in multiple interpreter mode ***
|
|
||||||
spawned uWSGI worker 1 (and the only) (pid: 12998, cores: 1)
|
|
||||||
coucou
|
|
||||||
[pid: 12998|app: 0|req: 1/1] 127.0.0.1 () {38 vars in 766 bytes} [Fri Apr 10 16:25:30 2020] GET / => generated 7 bytes in 84 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1 switches on core 0)
|
|
|
@ -1,15 +1,20 @@
|
||||||
# minimal django application
|
# minimal django application
|
||||||
|
|
||||||
|
import json
|
||||||
|
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from django.core.wsgi import get_wsgi_application
|
from django.core.wsgi import get_wsgi_application
|
||||||
|
|
||||||
|
import uwsgi
|
||||||
|
|
||||||
|
DEBUG = True
|
||||||
SECRET_KEY = 'a'
|
SECRET_KEY = 'a'
|
||||||
ROOT_URLCONF = 'app'
|
ROOT_URLCONF = 'app'
|
||||||
|
|
||||||
|
|
||||||
def home(request):
|
def home(request):
|
||||||
print('coucou')
|
uwsgi.mule_msg(json.dumps(('enqueue', 'work!')), 1)
|
||||||
return HttpResponse('Yoohoo!')
|
return HttpResponse('Yoohoo!')
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
import json
|
||||||
|
import threading
|
||||||
|
import time
|
||||||
|
|
||||||
|
import uwsgi
|
||||||
|
|
||||||
|
WORKER_TIMEOUT = 60
|
||||||
|
|
||||||
|
queue = []
|
||||||
|
condition = threading.Condition()
|
||||||
|
|
||||||
|
|
||||||
|
def queue_worker():
|
||||||
|
while True:
|
||||||
|
with condition:
|
||||||
|
while not queue:
|
||||||
|
print('worker waiting!')
|
||||||
|
condition.wait(timeout=WORKER_TIMEOUT)
|
||||||
|
while queue:
|
||||||
|
item = queue.pop(0)
|
||||||
|
print('got item', item)
|
||||||
|
|
||||||
|
t = threading.Thread(target=queue_worker)
|
||||||
|
t.start()
|
||||||
|
|
||||||
|
|
||||||
|
def scheduler():
|
||||||
|
while True:
|
||||||
|
time.sleep(1)
|
||||||
|
with condition:
|
||||||
|
print('enqueue TICK!')
|
||||||
|
queue.append('tick!')
|
||||||
|
condition.notify()
|
||||||
|
|
||||||
|
t = threading.Thread(target=scheduler)
|
||||||
|
t.start()
|
||||||
|
|
||||||
|
|
||||||
|
def main_thread():
|
||||||
|
while True:
|
||||||
|
msg = uwsgi.mule_get_msg()
|
||||||
|
msg = json.loads(msg)
|
||||||
|
print('Got msg', repr(msg), msg)
|
||||||
|
kind, payload = msg
|
||||||
|
if kind == 'enqueue':
|
||||||
|
with condition:
|
||||||
|
queue.append(payload)
|
||||||
|
condition.notify_all()
|
||||||
|
print('enqueued payload', payload)
|
||||||
|
else:
|
||||||
|
print('unknown kind, payload:', kind, payload)
|
||||||
|
|
||||||
|
t = threading.Thread(target=main_thread)
|
||||||
|
t.daemon = True
|
||||||
|
t.start()
|
|
@ -11,4 +11,4 @@ deps =
|
||||||
django
|
django
|
||||||
commands =
|
commands =
|
||||||
./install-uwsgi.sh
|
./install-uwsgi.sh
|
||||||
uwsgi-core --plugin python3 --http-socket :{env:PORT:3001} --wsgi-file app.py --logto app.log
|
uwsgi-core -T -M --plugin python3 --http-socket :{env:PORT:3001} --wsgi-file app.py --mule=mule.py
|
||||||
|
|
Loading…
Reference in New Issue