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秒;也就是说,自动加载程序将每秒检查一次文件。- files = None¶
要轮询以进行修改的文件集。
- frequency = 1¶
轮询已修改文件的间隔(秒)。
- match = '.*'¶
用于匹配文件名的正则表达式。
- class cherrypy.process.plugins.BackgroundTask(interval, function, args=[], kwargs={}, bus=None)[源代码]¶
-
threading.thread的一个子类,其run()方法重复。
将此类用于大多数重复任务。它使用time.sleep()来等待每一个时间间隔,这并不是非常响应;也就是说,即使调用self.cancel(),也必须等到sleep()调用完成后线程才会停止。为了补偿,它默认为守护进程,这意味着它不会延迟停止整个进程。
- class cherrypy.process.plugins.Daemonizer(bus, stdin='/dev/null', stdout='/dev/null', stderr='/dev/null')[源代码]¶
基类:
cherrypy.process.plugins.SimplePlugin
监视正在运行的脚本。
通过以下方式与网站进程总线一起使用:
Daemonizer(bus).subscribe()
当该组件完成时,该进程将与父环境完全分离。请注意,使用此组件时,如果分叉子进程中发生启动错误,则父进程返回的代码仍然为0。初始守护进程中的错误仍然返回正确的退出代码。因此,如果您使用这个插件进行后台监控,就不要使用返回代码作为进程是否完全启动的准确指示器。实际上,该返回代码仅指示进程是否成功完成了第一个分叉。
- class cherrypy.process.plugins.DropPrivileges(bus, umask=None, uid=None, gid=None)[源代码]¶
基类:
cherrypy.process.plugins.SimplePlugin
删除权限。uid/gid参数在Windows上不可用。
特别感谢 Gavin Baker
- property gid¶
Unix。
- 类型
要跑的球。可利用性
- 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¶
回调运行之间的时间(秒)。
- thread = None¶
A
BackgroundTask
线程。
- class cherrypy.process.plugins.PIDFile(bus, pidfile)[源代码]¶
基类:
cherrypy.process.plugins.SimplePlugin
通过wspbus维护pid文件。
- class cherrypy.process.plugins.PerpetualTimer(*args, **kwargs)[源代码]¶
-
threading.timer的响应子类,其run()方法重复。
只有当您真正需要一个非常可中断的计时器时才使用这个计时器;这会检查它的“完成”状态,每秒最多20次,这会导致非常高的CPU使用率。
- 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
将忽略尝试为未知信号注册处理程序时引发的错误。- _is_daemonized()[源代码]¶
返回指示当前进程是否作为守护进程运行的布尔值。
确定该标准的标准是什么?
daemon
条件是验证当前PID是否与最初构建插件时使用的PID不同 and 标准输入未连接到终端。当插件在其他进程内执行时,如在CI工具(Buildbot,Jenkins)中,仅验证TTY是不够的。
- 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'}¶
从信号号到名字的地图。
- class cherrypy.process.plugins.ThreadManager(bus)[源代码]¶
基类:
cherrypy.process.plugins.SimplePlugin
HTTP请求线程管理器。
如果您可以控制线程的创建和销毁,请发布到“获取线程”和“释放线程”通道(针对每个线程)。这将注册/注销当前线程,并根据需要发布到总线中的“启动线程”和“停止线程”侦听器。
如果线程是由您不控制的代码(如Apache)创建和销毁的,那么在每个HTTP请求开始时,只发布到“Acquire_线程”。在这种情况下,您不应该发布到“release_thread”,因为您不知道该线程是否会被重新使用。当公共汽车停下来时,它会为你叫“停止线程”的监听器。
- graceful()¶
释放所有线程并运行所有“停止线程”侦听器。
- threads = None¶
索引编号对。
- 类型
线程标识的映射