前言:我想把这些问题分成小问题,但显然,我错过了一些难题,对我来说似乎不可能.
我使用cherrypy内置的WSGI服务器开发了我的樱桃应用程序.我天真地假设,到时候,我将能够使用创建的WSGI Application类并使用任何符合WSGI的服务器进行部署.
我使用这篇博文来创建我自己的(但非常相似)的cherrypy插件和工具,以便在http请求期间使用SQLAlchemy连接到数据库.
我希望任何服务器都能像Cherrypy的内置服务器一样工作:
此流程与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) 是否可以在独立的cherrypy Web 应用程序中的单个模块上使用 python reload 命令(或类似命令)?我有一个基于 CherryPy 的 Web 应用程序,它经常被持续使用。我会时不时地做一个只影响一个模块的“重要”更改。我希望能够立即重新加载该模块,而不会影响 Web 应用程序的其余部分。诚然,完全重启很快,但是如果可能的话,我仍然希望避免几秒钟的停机时间。
我在树莓派上安装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'self'解释
对于这个例子:
class HelloWorld:
def index(self):
return "Hello world!"
Run Code Online (Sandbox Code Playgroud)
将self始终传递给函数.什么是self,为什么需要一直传递给函数/方法?谢谢.