cherrypy.process.plugins模块

用于网站进程总线的网站服务。

class cherrypy.process.plugins.Autoreloader(bus, frequency=1, match='.*')[源代码]

基类:cherrypy.process.plugins.Monitor

当文件更改时重新执行进程的监视器。

这个 plugin 重新启动进程(通过 os.execv() )如果它监视的任何文件发生更改(或被删除)。默认情况下,autoreloader监视所有导入的模块;您可以通过添加到 autoreload.files ::

cherrypy.engine.autoreload.files.add(myFile)

如果有导入的文件 not 希望监控,您可以调整 match 属性,正则表达式。例如,停止监视Cherrypy本身:

cherrypy.engine.autoreload.match = r'^(?!cherrypy).+'

像所有 Monitor 插件,自动加载插件 frequency 参数。默认值是1秒;也就是说,自动加载程序将每秒检查一次文件。

static _archive_for_zip_module(module)[源代码]

返回模块的存档文件名(如果相关)。

classmethod _file_for_file_module(module)[源代码]

返回模块的文件。

classmethod _file_for_module(module)[源代码]

返回模块的相关文件。

static _make_absolute(filename)[源代码]

确保文件名是绝对的,以避免os.chdir的影响。

files = None

要轮询以进行修改的文件集。

frequency = 1

轮询已修改文件的间隔(秒)。

match = '.*'

用于匹配文件名的正则表达式。

run()[源代码]

如果已注册的文件已被修改,则重新加载进程。

start()[源代码]

为self.run启动我们自己的后台任务线程。

sysfiles()[源代码]

返回一组要监视的sys.modules文件名。

class cherrypy.process.plugins.BackgroundTask(interval, function, args=[], kwargs={}, bus=None)[源代码]

基类:threading.Thread

threading.thread的一个子类,其run()方法重复。

将此类用于大多数重复任务。它使用time.sleep()来等待每一个时间间隔,这并不是非常响应;也就是说,即使调用self.cancel(),也必须等到sleep()调用完成后线程才会停止。为了补偿,它默认为守护进程,这意味着它不会延迟停止整个进程。

cancel()[源代码]
run()[源代码]

表示线程活动的方法。

可以在子类中重写此方法。标准的run()方法调用作为目标参数(如果有)传递给对象的构造函数的可调用对象,其中顺序参数和关键字参数分别取自args和kwargs参数。

class cherrypy.process.plugins.Daemonizer(bus, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null')[源代码]

基类:cherrypy.process.plugins.SimplePlugin

监视正在运行的脚本。

通过以下方式与网站进程总线一起使用:

Daemonizer(bus).subscribe()

当该组件完成时,该进程将与父环境完全分离。请注意,使用此组件时,如果分叉子进程中发生启动错误,则父进程返回的代码仍然为0。初始守护进程中的错误仍然返回正确的退出代码。因此,如果您使用这个插件进行后台监控,就不要使用返回代码作为进程是否完全启动的准确指示器。实际上,该返回代码仅指示进程是否成功完成了第一个分叉。

static daemonize(stdin='/dev/null', stdout='/dev/null', stderr='/dev/null', logger=<function Daemonizer.<lambda>>)[源代码]
start()[源代码]
class cherrypy.process.plugins.DropPrivileges(bus, umask=None, uid=None, gid=None)[源代码]

基类:cherrypy.process.plugins.SimplePlugin

删除权限。uid/gid参数在Windows上不可用。

特别感谢 Gavin Baker

property gid

Unix。

类型

要跑的球。可利用性

start()[源代码]
property uid

Unix。

类型

要运行的UID。可利用性

property umask

新创建的文件和目录的默认权限模式。

通常用八进制格式表示,例如, 0644 .可用性:Unix、Windows。

class cherrypy.process.plugins.Monitor(bus, callback, frequency=60, name=None)[源代码]

基类:cherrypy.process.plugins.SimplePlugin

wspbus侦听器在其自己的线程中定期运行回调。

callback = None

每隔一段时间调用的函数。

frequency = 60

回调运行之间的时间(秒)。

graceful()[源代码]

停止回调的后台任务线程并重新启动它。

start()[源代码]

在自己的后台线程中启动回调。

stop()[源代码]

停止回调的后台任务线程。

thread = None

A BackgroundTask 线程。

class cherrypy.process.plugins.PIDFile(bus, pidfile)[源代码]

基类:cherrypy.process.plugins.SimplePlugin

通过wspbus维护pid文件。

exit()[源代码]
start()[源代码]
class cherrypy.process.plugins.PerpetualTimer(*args, **kwargs)[源代码]

基类:threading.Timer

threading.timer的响应子类,其run()方法重复。

只有当您真正需要一个非常可中断的计时器时才使用这个计时器;这会检查它的“完成”状态,每秒最多20次,这会导致非常高的CPU使用率。

run()[源代码]

表示线程活动的方法。

可以在子类中重写此方法。标准的run()方法调用作为目标参数(如果有)传递给对象的构造函数的可调用对象,其中顺序参数和关键字参数分别取自args和kwargs参数。

class cherrypy.process.plugins.SignalHandler(bus)[源代码]

基类:object

为系统信号注册总线通道(和监听器)。

您可以通过修改应用程序所监听的信号以及它在接收信号时所做的修改。 SignalHandler.handlers ,一个信号名:回调对的dict。默认设置为:

handlers = {'SIGTERM': self.bus.exit,
            'SIGHUP': self.handle_SIGHUP,
            'SIGUSR1': self.bus.graceful,
           }

这个 SignalHandler.handle_SIGHUP() 方法调用 :func:`bus.restart() 如果进程被监控,但是 bus.exit() 如果进程附加到tty。这是因为Unix窗口管理器倾向于在用户关闭它们时向终端窗口发送叹息。

请随意添加每个平台上不可用的信号。这个 SignalHandler 将忽略尝试为未知信号注册处理程序时引发的错误。

_handle_signal(signum=None, frame=None)[源代码]

Python信号处理程序(self.set_handler为您订阅它)。

_is_daemonized()[源代码]

返回指示当前进程是否作为守护进程运行的布尔值。

确定该标准的标准是什么? daemon 条件是验证当前PID是否与最初构建插件时使用的PID不同 and 标准输入未连接到终端。

当插件在其他进程内执行时,如在CI工具(Buildbot,Jenkins)中,仅验证TTY是不够的。

_jython_SIGINT_handler(signum=None, frame=None)[源代码]
handle_SIGHUP()[源代码]

如果已监视,则重新启动,否则退出。

handlers = {}

从信号名(如“sigterm”)到处理程序(如bus.exit)的映射。

set_handler(signal, listener=None)[源代码]

为给定的信号(数字或名称)订阅处理程序。

如果提供了可选的“listener”参数,它将被订阅为给定信号的通道的侦听器。

如果给定的信号名称或编号在当前平台上不可用,则会引发ValueError。

signals = {Signals.SIGHUP: 'SIGHUP', Signals.SIGINT: 'SIGINT', Signals.SIGQUIT: 'SIGQUIT', Signals.SIGILL: 'SIGILL', Signals.SIGTRAP: 'SIGTRAP', Signals.SIGABRT: 'SIGABRT', Signals.SIGBUS: 'SIGBUS', Signals.SIGFPE: 'SIGFPE', Signals.SIGKILL: 'SIGKILL', Signals.SIGUSR1: 'SIGUSR1', Signals.SIGSEGV: 'SIGSEGV', Signals.SIGUSR2: 'SIGUSR2', Signals.SIGPIPE: 'SIGPIPE', Signals.SIGALRM: 'SIGALRM', Signals.SIGTERM: 'SIGTERM', Signals.SIGCHLD: 'SIGCHLD', Signals.SIGCONT: 'SIGCONT', Signals.SIGSTOP: 'SIGSTOP', Signals.SIGTSTP: 'SIGTSTP', Signals.SIGTTIN: 'SIGTTIN', Signals.SIGTTOU: 'SIGTTOU', Signals.SIGURG: 'SIGURG', Signals.SIGXCPU: 'SIGXCPU', Signals.SIGXFSZ: 'SIGXFSZ', Signals.SIGVTALRM: 'SIGVTALRM', Signals.SIGPROF: 'SIGPROF', Signals.SIGWINCH: 'SIGWINCH', Signals.SIGIO: 'SIGPOLL', Signals.SIGPWR: 'SIGPWR', Signals.SIGSYS: 'SIGSYS', Signals.SIGRTMIN: 'SIGRTMIN', Signals.SIGRTMAX: 'SIGRTMAX'}

从信号号到名字的地图。

subscribe()[源代码]

向self.handlers订阅信号。

unsubscribe()[源代码]

从信号中取消订阅self.handlers。

class cherrypy.process.plugins.SimplePlugin(bus)[源代码]

基类:object

为已知通道自动订阅方法的插件基类。

bus = None

A Bus 通常是Cherrypy.引擎。

subscribe()[源代码]

在总线上将此对象注册为(多通道)侦听器。

unsubscribe()[源代码]

将此对象作为总线上的侦听器注销。

class cherrypy.process.plugins.ThreadManager(bus)[源代码]

基类:cherrypy.process.plugins.SimplePlugin

HTTP请求线程管理器。

如果您可以控制线程的创建和销毁,请发布到“获取线程”和“释放线程”通道(针对每个线程)。这将注册/注销当前线程,并根据需要发布到总线中的“启动线程”和“停止线程”侦听器。

如果线程是由您不控制的代码(如Apache)创建和销毁的,那么在每个HTTP请求开始时,只发布到“Acquire_线程”。在这种情况下,您不应该发布到“release_thread”,因为您不知道该线程是否会被重新使用。当公共汽车停下来时,它会为你叫“停止线程”的监听器。

acquire_thread()[源代码]

为当前线程运行“start-thread”侦听器。

如果已经看到当前线程,则不会再次运行任何“start-thread”侦听器。

graceful()

释放所有线程并运行所有“停止线程”侦听器。

release_thread()[源代码]

释放当前线程并运行“停止线程”侦听器。

stop()[源代码]

释放所有线程并运行所有“停止线程”侦听器。

threads = None

索引编号对。

类型

线程标识的映射