我试图了解什么是粘贴脚本和贴纸.该网站远非清晰.我使用贴纸来为项目生成预先制作的布局,但我没有全面了解.
据我了解,并从维基百科条目,它说它是一个框架的Web框架,但这似乎是还原性的.paster create
似乎能够为setuptools/distutils启用的包创建预制布局.
它试图解决的问题(或一组问题)是什么?
我正在安装一个应用程序,并已安装python
和easy_install
.我现在有两个步骤要完成:
5. Make a config file as follows::
paster make-config openbiblio development.ini
6. Tweak the config file as appropriate and then setup the application::
paster setup-app config.ini
Run Code Online (Sandbox Code Playgroud)
我已经阅读了Stackoverflow的答案并尝试了网络但无法找到安装说明.
我想要一个相当于Django One True Way设置布局:共享基本文件,然后是生产文件和开发文件,每个文件都导入共享库.
Pyramid的配置是否可以实现?
我正在尝试在生产服务器上设置Mediacore(这是一个Pylons应用程序).文档建议将apache mod_fastcgi或mod_wsgi作为webserver,但我试图不惜任何代价避免使用apache,因为它是RAM-monger.另一方面,当我使用贴纸时,mediacore工作得很好,所以我想知道只是忽略apache并使用贴纸作为我的生产网络服务器的优缺点是什么?
几乎就是标题所说的,我希望能够连接到在paster或uwsgi下运行的python进程并利用pdb功能.
所以我对Pylons中的文件上传有一个相当棘手的问题,我希望有人可以帮助我.最初我在这里发布了这个问题,认为这是Pylons的一个问题,但我已经得出结论,问题是由服务器引起的,即粘贴,我已经确切地追踪了问题发生的地方,但我不确定如何解决它.行为如下.我有一个Pylons网络应用程序,我通过贴纸服务.应用程序的一部分允许用户将文件上传到系统,有时这些文件可能相当大(> 50mb).在上传过程中,服务器偶尔会重置连接(例如,在Chrome中,错误显示为"错误101(net :: ERR_CONNECTION_RESET):连接已重置.".)这并不总是发生,只有约50%的时间更大的文件.
在这些情况下,服务器永远不会将POST交给应用程序级别.没有抛出异常(至少,我能找到).我已将问题缩小到cascade.py(特别是从httpserver.py调用的wsgi_application方法).从后者:
result = self.server.wsgi_application(self.wsgi_environ,self.wsgi_start_response)
在cascade.py 的调用函数中,该文件似乎被写入临时文件.相关循环开始于:
而copy_len> 0:
然后它将块一个一个地写入打开的文件.这些写入都不会引发异常.但是,服务器通常只是在这些写入期间"消失",似乎是随机的(时间似乎与此无关).因此,如果我打印出正在递减的copy_len大小,我会看到它减少到一个点,然后服务器突然发送'连接重置'(或者至少客户认为它)和方法似乎已退出(copy_len不再打印,好像循环已退出,但不是0).
我完全难倒,因为1)这只是偶尔发生,2)我似乎无法追查实际的错误/异常 - 它只是......死了.
如果重要的话,我正在运行paste 1.7.3,Python 2.7和Fedora OS.有没有人对可能发生的事情有任何了解,以及我如何能够解决这个问题?非常感谢您的帮助.
我创建了一个自定义paster命令,如http://pythonpaste.org/script/developer.html#what-do-commands-look-like中所述.在我的setup.py中,我已经定义了这样的入口点:
entry_points={
'paste.global_paster_command' : [
'xxx_new = xxxconf.main:NewXxx'
]
}
Run Code Online (Sandbox Code Playgroud)
我在激活的virtualenv里面,并通过安装我的包
python setup.py develop
Run Code Online (Sandbox Code Playgroud)
如果我paster
在我的包文件夹中运行,我会看到我的自定义命令,我可以通过它运行它paster xxx ...
.但是,如果我离开我的包文件夹paster
不再显示我的命令.我查了一下which paster
,这是我的virtualenv的版本.我也启动了一个python解释器并导入xxxconf
,它工作正常.
当我在我的包文件夹之外时,我不知道为什么我的全局命令无法识别!?
是否可以运行"paster shell blah.ini"(或其变体)并自动加载某些库?
我讨厌总是输入"来自foo.bar import mystuff"作为每个贴纸shell中的第一个命令,并且希望计算机能够为我完成.
我有一个标准的磨机Pylons金字塔应用程序,它使用SQLAlchemy作为其数据库持久性.
我已经设置了一个SQLAlchemy-migrate repo并使其正常运行,但我真的希望能够使用paster升级和降级数据库,或者至少某种方式让用户(安装鸡蛋后)升级/降级数据库到所需的版本.
我现在已将它内置到我的应用程序中,因此在应用程序启动时它会进行版本升级,但我宁愿选择用户明确必须升级数据库的内容,以便他们确切知道发生了什么,并且知道事先做备份.
我该怎么办呢?如何添加粘贴命令?
用户设置应用程序的方式是:
paste make-config appname production.ini
paste setup-app production.ini#appname
Run Code Online (Sandbox Code Playgroud)
要进行第一次设置,要进行数据库升级或升级,我希望:
paste upgrade-app production.ini#appname
Run Code Online (Sandbox Code Playgroud)
或类似的规定.
这样的设置不可能吗?
production.ini文件:
[app:main]
use = egg:my_project
... various settings ...
[server:main]
...
Run Code Online (Sandbox Code Playgroud)
development.ini文件:
[app:main]
use = config:production.ini#main
... override some production settings ...
Run Code Online (Sandbox Code Playgroud)
然后,我尝试启动开发服务器并获得:
在config development.ini中找不到“主要”部分(以“服务器”为前缀)
我想将配置文件链接在一起,如下所示:
production.ini-> development.ini-> local.ini-> test.ini
看来这应该是可能的,但是我还没弄清楚魔术。
paster ×10
python ×9
pylons ×3
pyramid ×3
paste ×2
apache ×1
debugging ×1
ini ×1
python-paste ×1
setuptools ×1
sqlalchemy ×1
uwsgi ×1