uwsgi Python模块

uWSGI服务器自动添加一个 uwsgi 模块到你的Python应用中。

这对于配置uWSGI服务器是有用的,使用它的内部函数,并获取分析数据(以及检测你是否真的在uWSGI下运行)。

注解

许多这些函数当前不幸未公开。

模块级别的全局

uwsgi.numproc

当前运行的进程/worker数。

uwsgi.buffer_size

当前配置的缓冲区大小,以字节为单位。

uwsgi.started_on(int)

uWSGI启动的Unix时间戳。

uwsgi.fastfuncs

这是一个用来定义 FastFuncs 的字典。

uwsgi.applist

这是当前配置的应用列表。

uwsgi.applications

这是动态应用字典。

参见

应用字典

uwsgi.message_manager_marshal

当uWSGI服务器接收到一个已编组消息( marshalled message)时运行的回调。

uwsgi.magic_table

配置占位符的魔术表。

uwsgi.opt

当前配置选项,包括任何自定义占位符。

缓存函数

uwsgi.cache_get(key[, cache_name])

从缓存中获取一个值。

参数:
  • key – 要读取的缓存键。
  • cache_name – 多缓存模式中的缓存名字 (可以是name@address这样的格式)。可选。
uwsgi.cache_set(key, value[, expire, cache_name])

设置缓存中的一个值。

参数:
  • key – 要写的缓存键。
  • value – 要写的缓存值。
  • expire – 值的失效时间,以秒为单位。
  • cache_name – 多缓存模式中的缓存名字 (可以是name@address这样的格式)。可选。
uwsgi.cache_update(key, value[, expire, cache_server])
uwsgi.cache_del(key[, cache_name])

从缓存中删除给定的缓存值。

参数:
  • key – 要删除的缓存键
  • cache_name – 多缓存模式中的缓存名字 (可以是name@address这样的格式)。可选。
uwsgi.cache_exists(key[, cache_name])

快速检查缓存中是否有与给定键关联的值。

参数:
  • key – 要坚持的缓存键
  • cache_name – 多缓存模式中的缓存名字 (可以是name@address这样的格式)。可选。
uwsgi.cache_clear()

队列函数

uwsgi.queue_get()
uwsgi.queue_set()
uwsgi.queue_last()
uwsgi.queue_push()
uwsgi.queue_pull()
uwsgi.queue_pop()
uwsgi.queue_slot()
uwsgi.queue_pull_slot()

SNMP函数

uwsgi.snmp_set_community(str)
参数:str – 包含新的community值的字符串。

设置SNMP community字符串。

uwsgi.snmp_set_counter32(oidnum, value)
uwsgi.snmp_set_counter64(oidnum, value)
uwsgi.snmp_set_gauge(oidnum, value)
参数:
  • oidnum – 一个包含oid数字目标的整数
  • value – 一个包含计数器或测量新值的整数。

设置计数器或测量为一个指定的值。

uwsgi.snmp_incr_counter32(oidnum, value)
uwsgi.snmp_incr_counter64(oidnum, value)
uwsgi.snmp_incr_gauge(oidnum, value)
uwsgi.snmp_decr_counter32(oidnum, value)
uwsgi.snmp_decr_counter64(oidnum, value)
uwsgi.snmp_decr_gauge(oidnum, value)
参数:
  • oidnum – 一个包含oid数字目标的整数。
  • value – 一个包含增加/减少计数器或测量的量整数值。如果未指定,默认为1.

增加或减少计数器或测量一个特定的量。

注解

uWSGI OID树从1.3.6.1.4.1.35156.17开始

spooler函数

uwsgi.send_to_spooler(message_dict=None, spooler=None, priority=None, at=None, body=None, **kwargs)
参数:
  • message_dict – 发送到spool的消息 (字符串键,字符串值)。要么这样,要么设置**kwargs。
  • spooler – 要使用的spooler (id或者目录)
  • priority – 消息的优先级。越大越不重要。
  • at – 应该处理这条信息的最小的UNIX时间戳。
  • body – 除了消息字典本身,添加到消息的一个二进制 (字节字符串)体。它的值可通过消息中的 body 键访问。

发送数据到 uWSGI Spooler. 又名 spool().

注解

所有的关键字参数也可以在消息字典中传递。这意味着它们是保留字,嗯,某种程度上……

uwsgi.set_spooler_frequency(seconds)

设置spooler运行的频率。

uwsgi.spooler_jobs()
uwsgi.spooler_pid()
uwsgi.spooler_get_task(path)
参数:path – 读取任务的相对/绝对路径

高级方法

uwsgi.send_message()

使用 uwsgi协议 发送一般消息。

注解

这个函数被称为 send_uwsgi_message() ,直到版本 2f970ce58543278c851ff30e52758fd6d6e69fdc.

uwsgi.route()
uwsgi.send_multi_message()

使用 uwsgi协议 发送一条一般消息到多个接收者

注解

这个函数被称为 send_multi_uwsgi_message() ,直到 2f970ce58543278c851ff30e52758fd6d6e69fdc 版本。

参见

查看 Clustering 获得更多例子

uwsgi.accepting(accepting=True)

设置当前worker的接受标志的值。在同时使用 `Overriding Workers`_ 和加载时建立链的时候必须。

参见

覆盖worker

uwsgi.reload()

优雅地重载uWSGI服务器栈。

参见

Reload

uwsgi.stop()
uwsgi.workers() → dict

为当前服务器获取所有worker的统计数据字典。返回一个字典。

uwsgi.masterpid() → int

返回uWSGI master进程的进程标识符 (PID)。

uwsgi.total_requests() → int

返回的至今由uWSGI worker池管理的请求总数。

uwsgi.get_option()

也可作为 getoption() 使用。

uwsgi.set_option()

也可作为 setoption() 使用。

uwsgi.sorry_i_need_to_block()
uwsgi.request_id()
uwsgi.worker_id()
uwsgi.mule_id()
uwsgi.log()
uwsgi.log_this_request()
uwsgi.set_logvar()
uwsgi.get_logvar()
uwsgi.disconnect()
uwsgi.grunt()
uwsgi.lock(locknum=0)
参数:locknum – 要锁的锁号。Lock 0总是可用的。
uwsgi.is_locked()
uwsgi.unlock(locknum=0)
参数:locknum – 要解锁的锁号。Lock 0总是可用的。
uwsgi.cl()
uwsgi.setprocname()
uwsgi.listen_queue()
uwsgi.register_signal(num, who, function)

:param num:配置的信号数 :param who: 一个魔法字符串,会设置哪个/些进程接收该信号。

  • worker/worker0 将发送信号给第一个可用worker。如果你指定过一个空字符串,那么这是默认值。
  • workers 会发送信号给每个worker。
  • workerN (N > 0) 会发送信号给worker N。
  • mule/mule0 会发送信号给第一个可用mule。 (见 uWSGI Mule)
  • mules 会发送信号给所有mule。
  • muleN (N > 0) 会发送信号给mule N。
  • cluster 会发送信号给集群中的所有节点。警告:未实现。
  • subscribed 会发送信号给所有订阅节点。警告:未实现。
  • spooler 会发送信号给spooler。

clustersubscribed 特殊,因为它们会将信号发送给所有集群/订购节点的master。其他节点将不得不定义一个本地处理器,以避免可怕的信号风暴循环。

参数:function – 一个回调,接收一个数字参数。
uwsgi.signal(num)
参数:num – 引发的信号
uwsgi.signal_wait([signum])

阻塞进程/线程/异步核心直到接收到了一个信号。使用 signal_received 来获取接收到的信号值。 如果已经为该信号注册了一个处理函数,那么 signal_wait 将被终端,而实际的处理函数将处理该信号。

参数:signum – 可选 - 要等待的信号
uwsgi.signal_registered()
uwsgi.signal_received()

获取最后收到的信号值。结合 signal_wait 使用。

uwsgi.add_file_monitor()
uwsgi.add_timer(signum, seconds)
参数:
  • signum – 引发的信号值。
  • seconds – 引发信号的时间间隔。
uwsgi.add_probe()
uwsgi.add_rb_timer(signum, seconds[, iterations=0])

Add an user-space (red-black tree backed) timer.

参数:
  • signum – 引发的信号值。
  • seconds – 引发信号的时间间隔。
  • iterations – 引发信号的次数。0 (默认) 表示无数次。
uwsgi.add_cron(signal, minute, hour, day, month, weekday)

对于时间参数,你可以使用语法 -n 来表示“每n”。例如, hour=-2 将声明会每隔一个小时发送一次信号。

参数:
  • signal – 引发的信号值。
  • minute – 运行该事件的分钟。
  • hour – 运行该事件的小时。
  • day – 运行该事件的天。这会和 weekday 进行或运算。
  • month – 运行该事件的月。
  • weekday – 运行该事件的工作日。这会与 day 进行或运算。 (根据POSIX标准,0是星期天,6是星期一)
uwsgi.register_rpc()
uwsgi.rpc()
uwsgi.rpc_list()
uwsgi.call()
uwsgi.sendfile()
uwsgi.set_warning_message()
uwsgi.mem()
uwsgi.has_hook()
uwsgi.logsize()
uwsgi.send_multicast_message()
uwsgi.cluster_nodes()
uwsgi.cluster_node_name()
uwsgi.cluster()
uwsgi.cluster_best_node()
uwsgi.connect()
uwsgi.connection_fd()
uwsgi.is_connected()
uwsgi.send()
uwsgi.recv()
uwsgi.recv_block()
uwsgi.recv_frame()
uwsgi.close()
uwsgi.i_am_the_spooler()
uwsgi.fcgi()
uwsgi.parsefile()
uwsgi.embedded_data(symbol_name)
参数:string – 要提取的符号名。

从uWSGI二进制镜像中提取一个符号。

uwsgi.extract()
uwsgi.mule_msg(string[, id])
参数:
  • string – 要发送的字节字符串消息。
  • id – 可选 - 接收该消息的mule ID。如果你不指定一个ID,那么这条消息就会被发送到第一个可用的编程mule。

发送一条消息给一个mule。

uwsgi.farm_msg()
uwsgi.mule_get_msg()
返回:一旦接收到一条mule消息,则返回。

阻塞,直到接收到了一条Mule消息,并返回这条消息。可以在同一个编程mule中从多个线程中调用该函数。

uwsgi.farm_get_msg()
uwsgi.in_farm()
uwsgi.ready()
uwsgi.set_user_harakiri()

异步函数

uwsgi.async_sleep(seconds)

暂停处理当前请求 seconds 秒,并将控制权传给下一个异步核心。

参数:seconds – 休眠时间,以秒为单位。
uwsgi.async_connect()
uwsgi.async_send_message()
uwsgi.green_schedule()
uwsgi.suspend()

挂起处理当前请求,并将控制权传给下一个要求控制权的异步核心。

uwsgi.wait_fd_read(fd[, timeout])

挂起处理当前请求,直到文件描述符 fd 上有可读数据。在挂起以添加更多文件描述符到被监控的集合中之前可能会被多次调用。

参数:
  • fd – 文件描述符号。
  • timeout – 可选的超时 (如果省略,则是无限).
uwsgi.wait_fd_write(fd[, timeout])

挂起处理当前请求,直到文件描述符 fd 上没有更多可写的内容。 在添加更多文件描述符到被监控的集合中之前可能会被多次调用。

参数:
  • fd – 文件描述符号。
  • timeout – 可选的超时 (如果省略,则是无限).

SharedArea函数

uwsgi.sharedarea_read(pos, len) → bytes

从uWSGI SharedArea —— uWSGI组件间共享内存页 读取一个字节字符串。

参数:
  • pos – 读取的起始位置。
  • len – 要读取的字节数。
返回:

读取的字节,或者当共享区域未启用/读取请求无效时,返回 None

uwsgi.sharedarea_write(pos, str) → long

将一个字节字符串写入到uWSGI SharedArea —— uWSGI组件间共享内存页.

参数:
  • pos – 写入的起始位置。
  • str – 要写入的字节字符串。
返回:

已写入的字节数,或者当共享区域未启用/不能完全结束写入时,返回 None

uwsgi.sharedarea_readbyte(pos) → int

从uWSGI SharedArea —— uWSGI组件间共享内存页 读取单个字节。

参数:pos – 读取的起始位置。
返回:读取的字节,或者当共享区域未启用/读取请求无效时,返回 None
uwsgi.sharedarea_writebyte(pos, val) → int

将单个字节写入到uWSGI SharedArea —— uWSGI组件间共享内存页.

参数:
  • pos – 写入该值的位置。
  • val (整型) – 要写入的值。
返回:

已写入的字节,或者当共享区域未启用/写请求无效时,返回 None

uwsgi.sharedarea_readlong(pos) → int

从uWSGI SharedArea —— uWSGI组件间共享内存页 读取一个64位(8字节)长的值。

参数:pos – 读取的位置。
返回:读取的值,或者当共享区域未启用/读请求无效时,返回 None
uwsgi.sharedarea_writelong(pos, val) → int

将一个64位(8字节)长的值写入到uWSGI SharedArea —— uWSGI组件间共享内存页.

参数:
  • pos – 要写入该值的位置。
  • val (long) – 要写的值。
返回:

已写的值,或者当共享区域未启用/写请求无效时,返回 None

uwsgi.sharedarea_inclong(pos) → int

自动增加uWSGI SharedArea —— uWSGI组件间共享内存页 中的一个64位long值。

参数:pos – 值的位置。
返回:给定位置上的新的值,或者当共享区域未启用/读请求无效时,返回 None

Erlang函数

uwsgi.erlang_send_message(node, process_name, message)
uwsgi.erlang_register_process(process_name, callable)
uwsgi.erlang_recv_message(node)
uwsgi.erlang_connect(address)
返回:文件描述符,或者错误时返回-1
uwsgi.erlang_rpc(node, module, function, argument)