I have a request-logging tween in only a page of code. It's straightforward to write from the documentation.
https://pyramid.readthedocs.io/en/latest/narr/hooks.html#registering-tweens I adapted the code for your use case (untested). Your module would have something like this: # Module 'myapp.lib.mytween' def includeme(config): # Calculate the dotted name of the factory function. # E.g., "myapp.lib.mytween.my_tween_factory". factory_name = __name__ + ".my_tween_factory" config.add_tween(factory_name) # You can wrap app this in an 'if' to conditionally enable it; e.g., # ``if pyramid.settings.asbool(config.registry.settings.get("myoption", True))`` def my_tween_factory(handler, registry): # Return a tween callable. # 'handler' is the next tween or the WSGI application. # Deployment settings are in 'registry.settings'. def my_tween(handler, request): if is_maintenance_mode: # Could limit it to certain request.path's. # Return an error response, bypassing the application. return pyramid.response.HTTPServiceUnavailable(maintenance_message) else: # Call next tween/application and return its response unchanged. return handler(request) Then list your module in 'pyramid.includes' in the config file. E.g., "myapp.lib.mytween". That 'if is_maintenance_mode' condition could check whether a specified file exists. The file path could be in a config setting. On Thu, Jan 7, 2021 at 3:32 PM C J <work.cedricjos...@gmail.com> wrote: > > That's really interesting Thierry. Can you please show me how to do? > I have tried to use tweens. I tried many things starting with > *pyramid.tweens = pyramid_maintenance.tween_maintenance *and modifying > the *__init__.py* file, however, I do not understand what they are and > how to use them despite hours spent reading the Pyramid documentation and > different articles. > Being working on a website that is already in production I also wonder how > I would be able to implement your solution based on an external CMS. > > > [image: Mailtrack] > <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> > Sender > notified by > Mailtrack > <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> > 07/01/21 > à 21:59:31 > > On Thu, Jan 7, 2021 at 9:22 PM Thierry Florac <tflo...@gmail.com> wrote: > >> I've built a custom Pyramid tween to handle this and redirect requests >> while application is up! >> It can handle redirects (based on regular expressions) before or after >> the request is handled by Pyramid application, to be able to set the site >> in "maintenance mode", or to handle custom redirects in case of NotFound >> exceptions... >> All configuration is done through our Pyramid CMS. >> >> Best regards, >> Thierry >> -- >> https://www.ulthar.net -- http://pyams.readthedocs.io >> >> >> Le jeu. 7 janv. 2021 à 18:43, 'Jonathan Vanasco' via pylons-discuss < >> pylons-discuss@googlegroups.com> a écrit : >> >>> I typically handle this on nginx which sites in front of Pyramid. if >>> you wanted to do everything in python, you could probably use WSGI >>> middleware to route to a separate maintenance application or html file. >>> >>> On Thursday, January 7, 2021 at 10:09:34 AM UTC-5 C J wrote: >>> >>>> Hi everybody, >>>> >>>> I am looking for an easy way to temporarily redirect all the users of >>>> my pyramid website to a maintenance vue without having to comment/delete, >>>> etc my routes. >>>> I would like to make it easy to re-activate the others routes when the >>>> maintenance is done. >>>> I found this : >>>> https://pypi.org/project/pyramid_maintenance/ >>>> but I always get : >>>> >>>> in renderer >>>> raise ValueError('No such renderer factory %s' % str(self.type)) >>>> ValueError: No such renderer factory .jinja2" >>>> >>>> with my browser displaying : >>>> "Internal Server Error The server encountered an unexpected internal >>>> server error (generated by waitress)" >>>> >>>> I am new to Pyramid so please give me the necessary details step by >>>> step. >>>> >>>> Best regards. >>>> Cedric J. >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "pylons-discuss" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to pylons-discuss+unsubscr...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/pylons-discuss/98a779a5-5bcc-4971-a271-a202cc49f732n%40googlegroups.com >>> <https://groups.google.com/d/msgid/pylons-discuss/98a779a5-5bcc-4971-a271-a202cc49f732n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "pylons-discuss" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/pylons-discuss/jKTnofibd00/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> pylons-discuss+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/pylons-discuss/CAPX_VWBO5j0im6r0RRKEf%3D%3DzXyx5y_Qp%3DUJ5bntEGQtdiDejKQ%40mail.gmail.com >> <https://groups.google.com/d/msgid/pylons-discuss/CAPX_VWBO5j0im6r0RRKEf%3D%3DzXyx5y_Qp%3DUJ5bntEGQtdiDejKQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- > You received this message because you are subscribed to the Google Groups > "pylons-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to pylons-discuss+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/pylons-discuss/CAJgq6FJC11OfFNbfhhPwfMKRJsJfpd2UpWUDs5SAm5hKaMWpzA%40mail.gmail.com > <https://groups.google.com/d/msgid/pylons-discuss/CAJgq6FJC11OfFNbfhhPwfMKRJsJfpd2UpWUDs5SAm5hKaMWpzA%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- Mike Orr <sluggos...@gmail.com> -- You received this message because you are subscribed to the Google Groups "pylons-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to pylons-discuss+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/pylons-discuss/CAH9f%3DupojN7dp2MMJENErbLWoSJuZLNp%3DACaNQqCkrazN0So5g%40mail.gmail.com.