小编Dmi*_*kin的帖子

使用烧杯会话检查用户是否在Pyramid中进行了身份验证

我正在使用Pyramid和Beaker会话创建一个webapp.
我想request.session['user_id']在成功登录后存储用户ID 和其他一些信息,然后用它来检查用户是否已登录:

if 'user_id' in request.session:
    # user signed in
else:
    # user not signed in or session is expired
Run Code Online (Sandbox Code Playgroud)

现在的问题是:是否可以安全地依赖于会话或将是更好的和/或使用更安全金字塔的authenticated_userid()remember()forget()pyramid.security

python authentication session pyramid

12
推荐指数
1
解决办法
3198
查看次数

SQLAlchemy:尝试保存非唯一值后重新保存模型的唯一字段

在我的SQLAlchemy应用程序中,我有以下模型:

from sqlalchemy import Column, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker
from zope.sqlalchemy import ZopeTransactionExtension

DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))

class MyModel(declarative_base()):
    # ...
    label = Column(String(20), unique=True)

    def save(self, force=False):
        DBSession.add(self)
        if force:
            DBSession.flush()
Run Code Online (Sandbox Code Playgroud)

稍后MyModel我想要label随机生成的每个新对象的代码,如果生成的值已经存在于DB中,则只重新生成它.
我正在尝试执行以下操作:

# my_model is an object of MyModel
while True:
    my_model.label = generate_label()
    try:
        my_model.save(force=True)
    except IntegrityError:
        # label is not unique - will do one more iteration
        # (*)
        pass
    else:
        # my_model saved successfully - exit …
Run Code Online (Sandbox Code Playgroud)

python database sqlalchemy

7
推荐指数
1
解决办法
5437
查看次数

使用Celery与SQLAlchemy和Pyramid

我正在使用Pyramid-1.2.1创建Web应用程序,SQLAlchemy作为数据库后端.
现在我需要和这个应用程序一起做一些周期性的任务,我想使用Celery作为任务处理器,SQLAlchemy作为消息队列和结果后端.

1)我已经安装了Celery-2.1.4,但我无法弄清楚如何使它工作.这是我的celeryconfig.py档案:

# List of modules to import when celery starts.
CELERY_IMPORTS = ("my_app.tasks", )

## Result store settings.
CELERY_RESULT_BACKEND = "database"
CELERY_RESULT_DBURI = "sqlite:///MyDataBase.db"
CELERY_RESULT_SERIALIZER = "json"

## Broker settings.
BROKER_TRANSPORT = "sqlakombu.transport.Transport"
BROKER_HOST = "sqlite:///MyDataBase.db"
Run Code Online (Sandbox Code Playgroud)

my_app.tasks含有芹菜例子简单的加法任务.
现在我跑的时候

$ celeryd -l info
Run Code Online (Sandbox Code Playgroud)

我看到以下内容:

[2011-11-11 20:22:50,750: WARNING/MainProcess] celery@OrangeMac.local v2.1.4 is starting.
[2011-11-11 20:22:50,765: WARNING/MainProcess]  
Configuration ->
    . broker -> sqlakombu.transport.Transport://guest@sqlite:///MyDataBase.db/
    . queues ->
        . celery -> exchange:celery (direct) binding:celery
    . concurrency -> 4
    . loader …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy celery pyramid

5
推荐指数
1
解决办法
2742
查看次数