hello, i was trying to figure out how the config files should be done in hypercorn, but i found 0 examples unfortunately. as far i as i got reading the documentation i have to insert the parameters in config.py as global variables. anyways hypercorn is ignoring those variables
i post the example file i wrote
import asyncio
from quart import Quart
from hypercorn.asyncio import serve
from hypercorn.config import Config
app = Quart(__name__)
@app.route('/')
async def hello():
return 'hello'
if __name__ == '__main__':
config = Config()
config.from_pyfile("config.py")
asyncio.run(serve(app, config))
this is my config.py
bind = '0.0.0.0:3068'
anyways issuing python3.7 main.py
it starts it [INFO] Running on http://127.0.0.1:8000
i think the config.py should not be written this way if getting ignored.
can someone give me a hint? thank you and sorry to bother you
from_pyfile
returns a config instance
running hypercorn on production i get this error that i don't get in development
Traceback (most recent call last):
File "/home/chatincognitobot/.local/lib/python3.7/site-packages/quart/app.py", line 1862, in handle_request
return await self.full_dispatch_request(request_context)
File "/home/chatincognitobot/.local/lib/python3.7/site-packages/quart/app.py", line 1887, in full_dispatch_request
result = await self.handle_user_exception(error)
File "/home/chatincognitobot/.local/lib/python3.7/site-packages/quart/app.py", line 1100, in handle_user_exception
return await self.handle_http_exception(error)
File "/home/chatincognitobot/.local/lib/python3.7/site-packages/quart/app.py", line 1080, in handle_http_exception
return await handler(error)
File "/home/chatincognitobot/bot/web_server.py", line 64, in page_not_found_handler
return await web_server_code.pages.page_not_found_handler(request, e)
File "/home/chatincognitobot/bot/web_server_code/pages.py", line 29, in page_not_found_handler
page_not_found=await web_server_code.locale.get_string('page_not_found', browser_language)
File "/home/chatincognitobot/.local/lib/python3.7/site-packages/quart/templating.py", line 90, in render_template
template = current_app.jinja_env.get_or_select_template(template_name_or_list)
File "/home/chatincognitobot/.local/lib/python3.7/site-packages/quart/local.py", line 118, in getattr
return getattr(self._get_current_object(), name)
File "/home/chatincognitobot/.local/lib/python3.7/site-packages/quart/app.py", line 337, in jinja_env
self._jinja_env = self.create_jinja_environment()
File "/home/chatincognitobot/.local/lib/python3.7/site-packages/quart/app.py", line 429, in create_jinja_environment
jinja_env = self.jinja_environment(self, **options)
File "/home/chatincognitobot/.local/lib/python3.7/site-packages/quart/templating.py", line 32, in init
super().__init__(**options)
TypeError: __init__() got an unexpected keyword argument 'enable_async'
i think it should be something related to async but i don't get waht
This message is replying to a Matrix event but we were unable to find associated bridged Gitter message to put it in the appropriate threaded conversation.
if you run the certbot renew using cron you can stop and start the server before and after the renewal
make_test_body_with_headers
(I get a non-empty body), await request.files
returns an empty dict inside my webapp code. I think this is related with the multipart header value not containing the boundary?
strict_slashes
docs
I've written about how to use postgres with Quart, specifying my preferred libraries (Databases & asyncpg) and how to convert types automatically,
https://pgjones.dev/blog/quart-postgres-2021/
Would be good to know if you think this is better as an extension
Hi @pgjones I am stumped with the following. I'm trying to pass a cursor_id
to a websocket view, like so:
@home_app.websocket("/ws")
@login_required
async def ws():
dbc = current_app.dbc
cursor_id = int(request.args.get("cursor_id"))
But when I try to read the argument I get the error: "Attempt to access request outside of a relevant context". How can I pass that value from the template to the websocket endpoint?
FileStorage.stream
not being an asyncio object, or would we be locked waiting for the (currently) 16KB chunks of data on every iteration? I think those would probably be fine considering the kernel can cache possible future file reads, but I'm not sure.
queue.get()
also never worked