1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-11-08 19:26:48 +00:00
webvirtcloud/instances
catborise 6709681508 feat(webvirtcloud): a request waiting on a host holds one thread, not a worker
A host that is up but does not answer (a hung NFS mount, for one) keeps
a libvirt call waiting: libvirt's keepalive does not end it, since the
daemon still answers keepalives. Each such request held a whole sync
worker, and once they held every worker the panel stopped answering,
pages without libvirt too; F5 added another.

gunicorn now runs threaded workers, 4 threads each, and a worker takes
no more connections than it has threads, so one whose threads are all
busy leaves new requests to the others. A threaded worker keeps
reporting in while a thread waits, so gunicorn's timeout no longer ends
the request: the worker now exits itself when a request runs past the
timeout (600 s), and gunicorn starts a new one. Short claims expire on
that bound.

The address search runs one at a time in a process, as it did with one
request per worker.
2026-11-02 21:19:01 +03:00
..
api fix(instances): Refresh ISO list says which pools it could not read 2026-11-02 16:11:15 +03:00
fixtures Instances overhaul 2020-07-13 15:33:09 +06:00
migrations fix(admin): Removed VMs shows the host a VM left and confirms a delete 2026-10-26 11:48:40 +03:00
templates fix(instances): the Migrate tab keeps disks of one file name apart 2026-11-02 16:29:00 +03:00
templatetags feat(instances): the VM list on Bootstrap's pills, badges and menus, its actions by the user's rights 2026-10-28 13:55:46 +03:00
tests feat(webvirtcloud): a request waiting on a host holds one thread, not a worker 2026-11-02 21:19:01 +03:00
__init__.py Fixe migrations for new deployments 2020-05-28 18:19:25 +06:00
addresses.py feat(webvirtcloud): a request waiting on a host holds one thread, not a worker 2026-11-02 21:19:01 +03:00
apps.py format python code with black 2022-11-02 08:54:35 +03:00
forms.py feat(instances): a VM's console settings in two cards, with a password action 2026-10-30 14:55:57 +03:00
jobs.py feat(instances): a clone takes the size asked and starts if asked 2026-11-01 22:38:43 +03:00
models.py feat(instances): a clone takes the size asked and starts if asked 2026-11-01 22:38:43 +03:00
report.py fix(admin): the Logs download survives any row and stops at a size it can build 2026-10-26 10:12:53 +03:00
states.py feat(instances): a VM's power actions at a glance, a power cut asked first 2026-10-30 19:21:30 +03:00
urls.py perf(instances): the VM page lists ISO images without reading every pool 2026-11-02 13:58:51 +03:00
utils.py feat(instances): the VM lists follow changes by themselves 2026-11-01 19:53:45 +03:00
views.py fix(instances): Refresh ISO list says which pools it could not read 2026-11-02 16:11:15 +03:00