小编rob*_*123的帖子

Celery的难度:函数对象没有属性"延迟"

我最近在软件开发过程中一直在努力,并且在我的意愿下弯曲芹菜取得了一些成功.

我已成功使用它发送电子邮件,并且刚刚尝试使用几乎完全相同的代码(在重新启动所有进程之后等)通过Twilio发送短信.

但是我一直收到以下问题:

File "/Users/Rob/Dropbox/Python/secTrial/views.py", line 115, in send_sms
send_sms.delay(recipients, form.text.data)
AttributeError: 'function' object has no attribute 'delay'
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

@celery.task
def send_email(subject, sender, recipients, text_body):
    msg = Message(subject, sender=sender)
    for email in recipients:
        msg.add_recipient(email)
    msg.body = text_body
    mail.send(msg)

@celery.task
def send_sms(recipients, text_body):
    for number in recipients:
        print number
        num = '+61' + str(number)
        print num
        msg = text_body + 'this message to' + num
        client.messages.create(to=num, from_="+14804054823", body=msg)
Run Code Online (Sandbox Code Playgroud)

send.email.delay从我的views.py调用时效果很好,但send_sms.delay每次都失败并出现上述错误.

任何有关故障排除的帮助表示赞赏.

- 按照要求:

@app.route('/send_mail', methods=['GET', 'POST'])
@roles_accepted('Admin')
def send_mail():
    form = SendMailForm(request.form) …
Run Code Online (Sandbox Code Playgroud)

python celery flask python-2.7 flask-security

8
推荐指数
1
解决办法
5002
查看次数

从多对多 SQL-Alchemy 和 Postgresql 中删除

我正在尝试从 sql-alchemy 中的多对多关系中删除一个子对象。

我不断收到以下错误:

StaleDataError: DELETE statement on table 'headings_locations' expected to delete 1 row(s); Only 2 were matched.
Run Code Online (Sandbox Code Playgroud)

我查看了一些现有的堆栈交换问题(SQLAlchemy DELETE 错误由具有相同关系的延迟加载和动态版本引起SQLAlchemy StaleDataError 在删除通过 ORM 插入的项目时发生 sqlalchemy.orm.exc.StaleDataErrorSQLAlchemy Attempting两次删除多对多次要关系从 MySQL 中的多对多关系删除) 以及阅读文档,但无法弄清楚为什么它不起作用。

我定义关系的代码如下:

headings_locations = db.Table('headings_locations',
        db.Column('id', db.Integer, primary_key=True),
        db.Column('location_id', db.Integer(), db.ForeignKey('location.id')),
        db.Column('headings_id', db.Integer(), db.ForeignKey('headings.id')))


class Headings(db.Model):
    __tablename__ = "headings"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80))
    version = db.Column(db.Integer, default=1)
    special = db.Column(db.Boolean(), default=False)
    content = db.relationship('Content', backref=db.backref('heading'), cascade="all, delete-orphan") …
Run Code Online (Sandbox Code Playgroud)

postgresql sqlalchemy flask python-2.7 flask-sqlalchemy

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

内容未更新时,SQLAlchemy onupdate context.current_parameters 中断流程

我有一个使用 SQL-Alchemy 的 Flask 应用程序。我有一个特定的字段,该字段设置为使用 python 方法在更新时修改它的内容。

代码如下:

def convert_markdown_to_html(context):
    #pdb.set_trace()
    return markdown2.markdown(context.current_parameters['content_markdown'])
Run Code Online (Sandbox Code Playgroud)

和模型代码:

class Event(db.Model):
    __tablename__ = "event"
    id = db.Column(db.Integer, primary_key=True)
    event_name = db.Column(db.String, nullable=False)
    event_details = db.Column(db.String, nullable=False, onupdate=convert_markdown_to_html) # will store html content
    content_markdown = db.Column(db.String, nullable=True) # the markdown of event_details
    event_date = db.Column(db.Date, nullable=False)
    tickets_available = db.Column(db.Integer, nullable=False)
    tickets_left = db.Column(db.Integer, nullable=False)
    ticket_price = db.Column(db.Integer, nullable=True)
    ticket_price_member = db.Column(db.Integer, nullable=True)
    is_price = db.Column(db.Boolean())
    attendees = db.relationship('Event_records', backref=db.backref('attendees'))
Run Code Online (Sandbox Code Playgroud)

问题是,有时会在不更新 content_markdown 的情况下更新事件。

发生这种情况时,应用程序会中断,因为

context.current_parameters['content_markdown'] 
Run Code Online (Sandbox Code Playgroud)

不存在

目前,我正在愚蠢地解决这个问题,在可以想象更新事件的任何地方都包含以下行: …

python sqlalchemy flask python-2.7 flask-sqlalchemy

5
推荐指数
0
解决办法
378
查看次数