The default worker class of gunicorn is 'sync', and that is what is
expected by api codebase.
Increasing the load capacity of an api cluster must be done with:
a) number of sync gunicorn workers;
b) number of spawned gunicorn servers;
c) number of chalice containers;
Infrastructure can choose what is most convenient, and efficient.
There should be no use of much more than two pgconnection per worker,
even in the case where there is "some" asynchronous code interleaved
between synchronous code. The new async code is using its own pg pool
that has max=four.
ref: See max_size at
https://www.psycopg.org/psycopg3/docs/api/pool.html#the-connectionpool-class
* feat(ui): some design mocks
* fix(ui): some fixes for stuff
* feat(ui): test overview page layout
* feat(ui): fix placeholder
* feat(ui): answers table modal
* feat(tracker): user testing module in tracker
* fix(tracker): add "thank you" section, refactor file to make it readable
* fix(tracker): naming
* fix(tracker): naming
* fix(tracker): some refactorings for user testing modd
* feat(tracker): export assist vers to window obj, add recorder manager for user testing
* feat(tracker): refactor UT file
* feat(tracker): add recording delay for UT module
* feat(tracker): dnd for UT widget
* fix(tracker): changelog for assist
* fix(tracker): cover ut with tests
* fix(tracker): update package scripts to include testing before releasing packages
* fix(UI): fix uxt routes
* feat(ui): uxt store
* feat(ui): uxt store connection
* feat(ui): some api connections for utx
* feat(ui): some api connections for utx
* feat(ui): some api connections for utx
* feat(ui): api connections
* feat(ui): api connections
* feat(ui): api connections
* feat(ui): api connections
* feat(ui): utx components for replay
* feat(ui): utx components for replay
* feat(ui): make events shared
* feat(ui): final fixes
* feat(http): added new parameters to start response and new endpoint for canvas screenshorts
* fix(http): added new topic to dockerfile
* feat(http): try different multipart parser
* feat(image-storage): reused the same workflow for canvas topic handler
* feat(video-storage): new canvas parser and ffmpeg script
* feat(video-storage): use correct replay name for canvas
* feat(backend): added new message (CanvasNode)
* feat(backend): add canvas record events to db
* feat(backend): implemented missing new method for azure
---------
Co-authored-by: Alexander <zavorotynskiy@pm.me>
* feat(backend): added ux-testing support
* feat(backend): added ux-testing module
* feat(http): added bucket name for http service
* feat(backend): fixed small typos in http router
---------
Co-authored-by: Alexander <zavorotynskiy@pm.me>
* Async chalice.core.tenants:tenants_exists, and propagate
* rework after review
* typofix
* fix(chalice): small fixes
* fix(api): use a global variable to store singletong...
... that will not work if several POSIX threads are serving
from the same POSIX processus.
* fix(api): pass database argument as dictionary.
ref: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING
* chore(api): ease debugging with simple return statement.
* NOTES++
---------
Co-authored-by: Taha Yassine Kraiem <tahayk2@gmail.com>