Disabled cache.

This commit is contained in:
retoor 2025-01-24 16:33:27 +01:00
parent 21ab5628b0
commit 8486c22c32
5 changed files with 12 additions and 58 deletions

View File

@ -6,5 +6,6 @@ services:
- "8081:8081" - "8081:8081"
volumes: volumes:
- ./:/code - ./:/code
entrypoint: ["python","-m","snek.app"] entrypoint: ["gunicorn", "-w", "1", "-k", "aiohttp.worker.GunicornWebWorker", "snek.gunicorn:app","--bind","0.0.0.0:8081"]
#["python","-m","snek.app"]

View File

@ -7,6 +7,7 @@ from jinja_markdown2 import MarkdownExtension
from snek.system import http from snek.system import http
from snek.system.middleware import cors_middleware from snek.system.middleware import cors_middleware
from snek.view.about import AboutHTMLView, AboutMDView from snek.view.about import AboutHTMLView, AboutMDView
from snek.view.docs import DocsHTMLView, DocsMDView
from snek.view.index import IndexView from snek.view.index import IndexView
from snek.view.login import LoginView from snek.view.login import LoginView
from snek.view.login_form import LoginFormView from snek.view.login_form import LoginFormView
@ -39,6 +40,9 @@ class Application(BaseApplication):
) )
self.router.add_view("/about.html", AboutHTMLView) self.router.add_view("/about.html", AboutHTMLView)
self.router.add_view("/about.md", AboutMDView) self.router.add_view("/about.md", AboutMDView)
self.router.add_view("/docs.html", DocsHTMLView)
self.router.add_view("/docs.md", DocsMDView)
self.router.add_view("/web.html", WebView) self.router.add_view("/web.html", WebView)
self.router.add_view("/login.html", LoginView) self.router.add_view("/login.html", LoginView)
self.router.add_view("/login.json", LoginFormView) self.router.add_view("/login.json", LoginFormView)
@ -66,7 +70,7 @@ class Application(BaseApplication):
) )
@time_cache_async(60) #@time_cache_async(60)
async def render_template(self, template, request, context=None): async def render_template(self, template, request, context=None):
return await super().render_template(template, request, context) return await super().render_template(template, request, context)

View File

@ -9,6 +9,7 @@ from pygments.lexers import get_lexer_by_name
from pygments.formatters import html from pygments.formatters import html
from pygments.styles import get_style_by_name from pygments.styles import get_style_by_name
import functools import functools
from app.cache import time_cache_async
class MarkdownRenderer(HTMLRenderer): class MarkdownRenderer(HTMLRenderer):
def __init__(self, app, template): def __init__(self, app, template):
@ -28,7 +29,6 @@ class MarkdownRenderer(HTMLRenderer):
#return '\n<pre><code>%s</code></pre>\n' % escape(code) #return '\n<pre><code>%s</code></pre>\n' % escape(code)
lexer = get_lexer_by_name(lang, stripall=True) lexer = get_lexer_by_name(lang, stripall=True)
formatter = html.HtmlFormatter(lineseparator="<br>") formatter = html.HtmlFormatter(lineseparator="<br>")
print(code, lang,info, flush=True)
return highlight(code, lexer, formatter) return highlight(code, lexer, formatter)
def render(self): def render(self):
markdown_string = self.app.template_path.joinpath(self.template).read_text() markdown_string = self.app.template_path.joinpath(self.template).read_text()
@ -37,11 +37,12 @@ class MarkdownRenderer(HTMLRenderer):
return markdown(markdown_string) return markdown(markdown_string)
@functools.cache
def render_markdown_sync(app, markdown_string): def render_markdown_sync(app, markdown_string):
renderer = MarkdownRenderer(app,None) renderer = MarkdownRenderer(app,None)
markdown = Markdown(renderer=renderer) markdown = Markdown(renderer=renderer)
return markdown(markdown_string) return markdown(markdown_string)
@time_cache_async(120)
async def render_markdown(app, markdown_string): async def render_markdown(app, markdown_string):
return render_markdown_sync(app,markdown_string) return render_markdown_sync(app,markdown_string)

View File

@ -14,56 +14,3 @@ I made several design choices:
- !DRY for HMTL/jinja2 templates. For templates Snek does prefer to repeat itself to implement exceptions for a page easier. For Snek it's preffered do a few updates instead of maintaining a complex generic system that requires maintenance regarding templates. - !DRY for HMTL/jinja2 templates. For templates Snek does prefer to repeat itself to implement exceptions for a page easier. For Snek it's preffered do a few updates instead of maintaining a complex generic system that requires maintenance regarding templates.
- No existing chat backend like `inspircd` (Popular decent IRC server written in the language of angels) because I prefer to know what is exactly going on above performance and concurrency limit. Also, this approach reduces as networking layer / gateway layer. - No existing chat backend like `inspircd` (Popular decent IRC server written in the language of angels) because I prefer to know what is exactly going on above performance and concurrency limit. Also, this approach reduces as networking layer / gateway layer.
# Some internals
A few examples of how the system framework works.
## How to create a user
```python
# Save user to the table named 'user'
# Password gets sha256 encrypted with default a salt string
# of the snek.system.security module.
new_user_object = await app.service.user.register(
username="retoor",
password="retoorded"
)
```
## Encrypt string
```python
from snek.system import security
# Support for both utf and bytes.
var1 = security.encrypt("data")
var2 = security.encrypt(b"data")
# Is correct:
assert(var1 == var2)
```
## How to create a basic HTML / Markdown view
```python
from snek.system.view import BaseView
class IndexView(BaseView):
async def get(self):
# The render function supports markdown.
# It will render with syntax highlighting.
# Just use the .md file extension in the file name.
return await self.render("index.html")
```
## How to create a FormView
```python
from snek.system.view import BaseFormView
from snek.form.register import RegisterForm
class RegisterFormView(BaseFormView):
form = RegisterForm
```
## How to register a class view
```python
app.routes.add_view("/your-page.html", YourViewClass)
```

View File

@ -15,7 +15,8 @@
<span style="padding:10px;">Or</span> <span style="padding:10px;">Or</span>
<fancy-button url="/register.html" text="Register"></fancy-button> <fancy-button url="/register.html" text="Register"></fancy-button>
<a href="/about.html">Design choices</a> <a href="/about.html">Design choices</a>
<a href="/web.html">See web Application so far</a> <a href="/web.html">App preview</a>
<a href="/docs.html">API docs</a>
</div> </div>
</body> </body>
</html> </html>