# 3.10.19. Web Server Classes

Most of the source in master/buildbot/www is self-explanatory. However, a few classes and methods deserve some special mention.

## 3.10.19.1. Resources

class buildbot.www.resource.Redirect(url)

  This is a subclass of Twisted Web’s `Error`. If this is raised within `asyncRenderHelper`, the user will be redirected to the given URL.

class buildbot.www.resource.Resource

  This class specializes the usual Twisted Web `Resource` class.

  It adds support for resources getting notified when the master is reconfigured.

  needsReconfig

    If True, `reconfigResource` will be called on reconfig.

  reconfigResource(new_config)
    Parameters:

      new_config – new `MasterConfig` instance

    Returns:

      Deferred if desired

    Reconfigure this resource.

  It’s surprisingly difficult to render a Twisted Web resource asynchronously. This next method makes it quite a bit easier.

  asyncRenderHelper(request, callable, writeError=None)
    Parameters:

      - request – the request instance

      - callable – the render function

      - writeError – optional callable for rendering errors

    This method will call `callable`, which can be async or a Deferred, with the given `request`. The value returned from this callable will be converted to an HTTP response. Exceptions, including `Error` subclasses, are handled properly. If the callable raises `Redirect`, the response will be a suitable HTTP 302 redirect.

    Use this method as follows:

        def render_GET(self, request):
            return self.asyncRenderHelper(request, self.renderThing)