From 88cfa79b97eb43d65ace1154a16a1cd7ac3f0a60 Mon Sep 17 00:00:00 2001 From: Christian Cueni Date: Fri, 12 Jul 2024 08:19:36 +0200 Subject: [PATCH] Add blocking view --- env_secrets/local_chrigu.env | Bin 3056 -> 3076 bytes server/config/settings/base.py | 4 ++-- server/config/urls.py | 10 ++++++++- server/vbv_lernwelt/debugtools/__init__.py | 0 server/vbv_lernwelt/debugtools/views.py | 23 +++++++++++++++++++++ 5 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 server/vbv_lernwelt/debugtools/__init__.py create mode 100644 server/vbv_lernwelt/debugtools/views.py diff --git a/env_secrets/local_chrigu.env b/env_secrets/local_chrigu.env index 163e86935ad87ad9cfe49b4fa00ff12c24c2ec0c..f8d1f1fe4f0132d5dbb4f28bb4b5795d71fab916 100644 GIT binary patch literal 3076 zcmV+f4Eyr{M@dveQdv+`0GuvuK7UIF1B}VLp;$&Em|5$T#Q5Rtxw_eLB2NvBUCKqv z_!5bB_C)$YuWOA<#ZcQik|-ZLBmw+zDZ5fSq%csOS#sCQUN7aKq#}jA7D5_a77Ryj z7`8mndvaxH4QCGNSwl72Q*J^ECfS^sLnt>&g`pUm~7n=;7FH9NMQ zIUzkzPzpbkbp!hvb28g9e58UGfzXKYyS`$O0o(J&d}HY{V<_`gMEqvr=l{PZ{R23Q z2g|!ahlAJxL+h*@g>jMx+Zr*09=9w3xy_bBymOKX5YXRw-w4+P;Dh6V(QN#D_n?=$(s=lNrIt&dLDR9R^3k9JTPRA zo48r+(IF!^tU22>634=|gVS>6rz~@za2JR51kT(5tQks2Qh;635J}z#wyIHq1s-h1 z#?O?GwUM8VF?lk@7IG%>elb@F*T7oB>~(o&amA)OpMFPqZeCF;9)Ux1&0Fm$K`A` z**wXGw3lmq#l5(AqUBmbkQV9oeknO}3wW}L%^e;VFk`=CgQt=a#j$Pv_8#f#s3bwz z14?e<1Ry&p_!@K84dSP-q6M~>s_t`OQ337V*h1|za+3JWxS=xY zVOe@?#mY`e?Y)oB!RqSkY(r32!~~jGTDUVS4-xBRC&g4rjlkBo@Kc`Y210y=Rt3V0 ze(e9xKe%w2DD`|h=zxU|EY5Z&2b#wLwYnHz`LJciut(S9m-HOEwq#2 z1mpy>-CWxTrGz{4gF0_H&-+_4JpqtfU)JFTZqnZ9Eg{6(;{?Iw3Nghh7sX6ii|zlnb{^M#%5@X$ zr3Nl2>y8$<5-%kwa(@B;<%t#XD_lvBntvPAey4Szn?T=m^)Dk>9^Dq0+8MIpYS&ekY7h@b z<>3F^)m%d8#!|G3BSeWX;`W_%Ryy`=!HV5+b`Z6L-<7i!n{$4~1%Tc7anupuCx9@f z^8keYpRp{eap)!fb*z*8e?dgrZnEhEHH9)B4dDkK@bY-=dpvQE;X>MoylX}Bl> z_ndq%lTxMN9XECfK2+ZfUBKqWhn7fi4nh7*HU|#iQX^aa%Q-$AHUGxv#8 z#*KLfo*#WNxmC*qqm_Ws`9SU$KSd_sC(Q95)fXFP9PEUyN5|D2kMwWqsfzZeQ?we6!|I54j*hbu% zed-A05#vt87|c)E9h`;Av!UJB0QM?GYW|qlY$S*EqcI;|Z0GMS#LAHV6lY(D_+E@n zp1;y;M6Kj@<3c8SXC?h;!!I30Q`KkH0{!g}b)j85FOes=eBgS+Wq`guR%^PMX=+93 zT#>t7?B8a4u1;OeNj{nK#y&!dj`ACrQ@C=@mS(@+{^5Ivwpybk->76nyl#4(r`Pg0k4>+R_! zaehfP`E7fd>((P5Ly9e+c#j^q;Q|Cn>?G=|u3?%?ZNQKdme3ZxVnfTzE85}lRmu+G zQwI3n{+7sMI6Lz59pVnMW*%9esfTAg0EnukifKDQbi^LCs~tQqQ&(SUTfP25$s_lh SG|qQ$Wuqm0%1~kn`cB%ng8x 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 diff --git a/server/config/settings/base.py b/server/config/settings/base.py index af6b2e95..a4fda6fd 100644 --- a/server/config/settings/base.py +++ b/server/config/settings/base.py @@ -688,14 +688,12 @@ else: "DATATRANS_PAY_URL", default="https://pay.sandbox.datatrans.com" ) - # default settings for python sftpserver test-server ABACUS_EXPORT_SFTP_HOST = env("ABACUS_EXPORT_SFTP_HOST", default="localhost") ABACUS_EXPORT_SFTP_PASSWORD = env("ABACUS_EXPORT_SFTP_PASSWORD", default="admin") ABACUS_EXPORT_SFTP_PORT = env("ABACUS_EXPORT_SFTP_PORT", default="3373") ABACUS_EXPORT_SFTP_USERNAME = env("ABACUS_EXPORT_SFTP_USERNAME", default="admin") - # S3 BUCKET CONFIGURATION FILE_UPLOAD_STORAGE = env("FILE_UPLOAD_STORAGE", default="s3") # local | s3 @@ -753,6 +751,8 @@ CONSTANCE_CONFIG = { } TRACKING_TAG = env("IT_TRACKING_TAG", default="") +DEBUG_TOOLS = env.bool("IT_DEBUG_TOOLS", default=False) + if APP_ENVIRONMENT == "local": # http://whitenoise.evans.io/en/latest/django.html#using-whitenoise-in-development INSTALLED_APPS = ["whitenoise.runserver_nostatic"] + INSTALLED_APPS # noqa F405 diff --git a/server/config/urls.py b/server/config/urls.py index f956de90..eeaaa517 100644 --- a/server/config/urls.py +++ b/server/config/urls.py @@ -50,6 +50,7 @@ from vbv_lernwelt.dashboard.views import ( get_mentee_count, get_mentor_open_tasks_count, ) +from vbv_lernwelt.debugtools.views import async_blocking_view, blocking_view from vbv_lernwelt.edoniq_test.views import ( export_students, export_students_and_trainers, @@ -68,7 +69,6 @@ from vbv_lernwelt.importer.views import ( ) from vbv_lernwelt.media_files.views import user_image from vbv_lernwelt.notify.views import email_notification_settings - from vbv_lernwelt.shop.datatrans.datatrans_fake_server import ( fake_datatrans_api_view, fake_datatrans_pay_view, @@ -265,6 +265,14 @@ if "fakeapi" in settings.DATATRANS_API_ENDPOINT: ), ] +if settings.DEBUG_TOOLS: + urlpatterns += [ + re_path(r'server/debugtools/blocking/$', blocking_view, + name='blocking_view'), + re_path(r'server/debugtools/async-blocking/$', async_blocking_view, + name='async_blocking_view'), + ] + # fmt: on diff --git a/server/vbv_lernwelt/debugtools/__init__.py b/server/vbv_lernwelt/debugtools/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/vbv_lernwelt/debugtools/views.py b/server/vbv_lernwelt/debugtools/views.py new file mode 100644 index 00000000..105d9c91 --- /dev/null +++ b/server/vbv_lernwelt/debugtools/views.py @@ -0,0 +1,23 @@ +import asyncio +import time + +import structlog +from django.db import transaction +from django.http import HttpResponse + +logger = structlog.get_logger(__name__) + + +def blocking_view(request): + logger.info("blocking view start", label="debugtools", tool="blocking_view") + time.sleep(10) + logger.info("blocking view end", label="debugtools", tool="blocking_view") + return HttpResponse("Done") + + +@transaction.non_atomic_requests +async def async_blocking_view(request): + logger.info("async_blocking view start", label="debugtools", tool="blocking_view") + await asyncio.sleep(10) + logger.info("async_blocking view end", label="debugtools", tool="blocking_view") + return HttpResponse("aDone")