我的应用程序依赖于request.remote_addr这是None当我运行通过使用nosetests测试app.test_client().post('/users/login', ....).
当我运行测试时,如何模拟IP(127.0.0.1正常工作)? 我已经尝试设置环境变量,使用post()方法发送头文件,我已经通过nosetests,werkzeugs和flaskks文档进行了挖掘,但我尝试过的任何工作都没有.
我正在使用带有蓝图的Flask来获取我的网站的骨架,我在使用我的应用程序深层配置类时遇到了问题.
这是一些虚拟代码,解释了我如何设置一切:
websiteconfig.py
class Config(object):
pass
class ProductionConfig(Config):
DEBUG = False
class DevelopmentConfig(Config):
DEBUG = True
Run Code Online (Sandbox Code Playgroud)
website/__ init __.py:
# Some app code and config loading
app = Flask('website')
app.config.from_object('websiteconfig.DevelopmentConfig')
# Import some random blueprint
from website import users
app.register_blueprint(users.api)
# This works:
# print app.config['DEBUG']
Run Code Online (Sandbox Code Playgroud)
website/users/__ init __.py:
from flask import Blueprint
from website.users.models import test
api = Blueprint('users', __name__, url_prefix='/users')
# This works:
# print api.config['DEBUG']
# From models
print test()
Run Code Online (Sandbox Code Playgroud)
website/users/models.py:
# How can …Run Code Online (Sandbox Code Playgroud) 我在测试请求中发送cookie时遇到了一些麻烦.我尝试过这样的事情:
# First request to log in, retrieve cookie from response
response = self.app_client.post('/users/login', query_string={ data.. )
cookie = response.headers['Set-Cookie'] # Contains: user_hash=3f305370487731289a7f9bd8d379a1c2; Domain=.flowdev.com; Path=/
# Second request that requires the cookie
response = self.app_client.get('/users/', headers={'Set-Cookie': cookie})
# Here i print out request.cookies.get('user_hash') inside the app, which contains None
Run Code Online (Sandbox Code Playgroud)
我想这不是这么简单,但我不知道如何以正确的方式构建cookie.如何创建第二个请求,以便它在标题中的cookie中发送?
谢谢!
我正在尝试整理一个结果集,该结果集给出了按即将到来的生日排序的5个最近的用户.这种方法非常有效,直到闰年发挥作用.例如:
最重要的结果是出生于1987年,较低的是1988年.出生时的存储为yyyy-mm-dd.有没有一种简单的方法来排序这个问题,而不必重写整个查询?
SELECT u_birth, IF( DAYOFYEAR( u_birth ) >= DAYOFYEAR( NOW() ),
DAYOFYEAR( u_birth ) - DAYOFYEAR( NOW() ),
DAYOFYEAR( u_birth ) - DAYOFYEAR( NOW() ) +
DAYOFYEAR( CONCAT( YEAR( NOW() ), '-12-31' ) )
)
AS distance
FROM (blog_users)
WHERE `s_agehide` = 0
ORDER BY distance ASC
LIMIT 5
Run Code Online (Sandbox Code Playgroud)
从mysql手册中获取并修改此查询:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#c7489
我正在尝试使用worker socketio.sgunicorn.GeventSocketIOWorker使用gunicorn服务器在多个worker之间扩展gevent- socketio.我正在使用websockets,否则我正在强制进行XHR轮询(对于IE等).
XHR轮询需要一个会话来跟踪以下民意调查,但是当我从一个到两个或更多个工作人员时,请求开始在他们之间展开,这意味着状态丢失并且一切都崩溃了.
我认为以下几行代码是相关的:https: //github.com/abourget/gevent-socketio/blob/master/socketio/handler.py#L104-106 我想我需要一些其他的存储引擎,例如redis我正在使用常规的pubsub-actions,但这是在实际的库中.
所以我的问题是如何在我的应用程序中全局从内存会话存储转到另一个后端引擎(它是否优雅地覆盖上面链接中的会话代码?)而不必修改库本身?像php.ini中的PHP会话指令.我想可以说这是一个非常通用的python问题,但是我很难找到相关的信息,而且我也不确定它是否适用于这个库.
或者,如何在不同的工作人员和服务器上使用gevent-socketio的xhr-polling传输(没有粘性)?
谢谢!
有没有办法配置Flask用于不在每个语法错误上退出的简单服务器?
app = Flask(__name__)
app.run(host='0.0.0.0', debug=True, use_debugger=True, passthrough_errors=False);
Run Code Online (Sandbox Code Playgroud)
目前我正在使用这个简单服务器的设置.将passthrough_errors设置为False意味着大多数错误实际上使进程保持活动状态,以便我可以使用交互式调试器,但语法错误仍然会退出程序.我尝试了不同的配置值,但我没有找到任何有效的配置.谢谢!