标签: cherrypy

uWSGI,cherrypy和threading

前言:我想把这些问题分成小问题,但显然,我错过了一些难题,对我来说似乎不可能.

我使用cherrypy内置的WSGI服务器开发了我的樱桃应用程序.我天真地假设,到时候,我将能够使用创建的WSGI Application类并使用任何符合WSGI的服务器进行部署.

我使用这篇博文来创建我自己的(但非常相似)的cherrypy插件和工具,以便在http请求期间使用SQLAlchemy连接到数据库.

我希望任何服务器都能像Cherrypy的内置服务器一样工作:

  1. 主进程将产生X线程以满足X并发请求
  2. 我的引擎插件将使用连接池= X创建SQLalchemy引擎(因此任何请求都将具有其连接)
  3. 在请求到达时,我的工具将从池提供sql炼金术连接

此流程与uWSGI不匹配(只要我理解).

application.py在uWSGI配置中分配了我的.这个文件看起来像这样:

cherrypy.tools.db = DbConnectorTool()
cherrypy.engine.dbengine = DbEnginePlugin(cherrypy.engine, settings.database)
cherrypy.config.update({
    'engine.dbengine.on': True
})

from myapp.application import Application
root = Application(settings)
application = cherrypy.Application(root, script_name='', config=settings)
Run Code Online (Sandbox Code Playgroud)

我用这个application.py安装我的申请,建于当我开发和测试其服务器CherryPy的.

问题是uWSGI本身并没有创建任何线程,而且我的SQLAlchemy插件没有使用它,因为没有cherrypy.engine创建.

uWSGI是否支持使用线程为多个并发请求提供服务的线程?我能在我的网站上启动这些线程application.py吗?uWSGI会理解它并将这些线程用于并发请求吗?怎么能这样呢?我认为cherrypy可以以某种方式使用,或不?那我的SQLAlchemy插件怎么样,我cherrypy.engine只能在仅使用WSGI时启动cherrypy.Application

任何可以帮助我的帮助或信息将不胜感激.

编辑:

我的uWSGI配置:

<uwsgi>
    <socket>127.0.0.1:9001</socket>
    <master/>
    <daemonize>/var/log/uwsgi/app.log</daemonize>
    <logdate/>
    <threads/>
    <pidfile>/home/web/uwsgi.pid</pidfile>
    <uid>uwsgi</uid>
    <gid>uwsgi</gid>
    <workers>2</workers>
    <harakiri>90</harakiri>
    <harakiri-verbose/>
    <home>/home/web/</home>
    <pythonpath>/home/web/instance</pythonpath>
    <module>core.application</module>
    <no-orphans/>
    <touch-reload>/home/web/uwsgi-reload-web</touch-reload>
</uwsgi>
Run Code Online (Sandbox Code Playgroud)

python wsgi cherrypy uwsgi

0
推荐指数
1
解决办法
3254
查看次数

在cherrypy中重新加载单个模块?

是否可以在独立的cherrypy Web 应用程序中的单个模块上使用 python reload 命令(或类似命令)?我有一个基于 CherryPy 的 Web 应用程序,它经常被持续使用。我会时不时地做一个只影响一个模块的“重要”更改。我希望能够立即重新加载该模块,而不会影响 Web 应用程序的其余部分。诚然,完全重启很快,但是如果可能的话,我仍然希望避免几秒钟的停机时间。

python cherrypy

0
推荐指数
1
解决办法
434
查看次数

CherryPy访问控制允许来源

我在树莓派上安装CherryPy时遇到问题。

当我请求带有ajax的CherryPy函数时,出现以下消息:

XMLHttpRequest cannot load http://my_ip:8888/takePicture. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://my_ip' is therefore not allowed access.
Run Code Online (Sandbox Code Playgroud)

我的python代码:

import time
import os
import cherrypy

class Camera(object):
    @cherrypy.expose
    def takePicture(self):
        os.system('fswebcam -r 1280x720 -S 3 --info Salon --jpeg 100 --save images/history/%H%M%S.jpg')
        os.system('fswebcam -r 1280x720 -S 3 --info Salon --jpeg 100 --save images/last.jpg')

if __name__ == '__main__':
    cherrypy.config.update({'server.socket_host': 'my_ip'})
    cherrypy.config.update({'server.socket_port': 8888})
    cherrypy.quickstart(Camera())
Run Code Online (Sandbox Code Playgroud)

如何使用CherryPy更改标头响应?

预先感谢=)

python ajax cherrypy

0
推荐指数
1
解决办法
1648
查看次数

Python/CherryPy中的"self"是什么?

可能重复:
python'self'解释

对于这个例子:

class HelloWorld:

    def index(self):
        return "Hello world!"
Run Code Online (Sandbox Code Playgroud)

self始终传递给函数.什么是self,为什么需要一直传递给函数/方法?谢谢.

python cherrypy

-2
推荐指数
1
解决办法
372
查看次数

标签 统计

cherrypy ×4

python ×4

ajax ×1

uwsgi ×1

wsgi ×1