小编Son*_*Son的帖子

输入`='时Haskell错误解析错误

我是Haskell的新手,在开始之后ghci我尝试过:

f x = 2 * x
Run Code Online (Sandbox Code Playgroud)

我获得了:

<interactive>:1:4: parse error on input `='
Run Code Online (Sandbox Code Playgroud)

我不明白.

奇怪的是,它之前运作良好.我想我已经完成了错误配置的Haskell.重新安装ghc6并不能解决问题.

有关信息,我使用的是Ubuntu 10.4,ghc6的版本是6.12.1-12

haskell

111
推荐指数
3
解决办法
5万
查看次数

如何在sqlalchemy中正确关闭mysql连接?

我想知道什么是关闭所有mysql连接的正确方法sqlalchemy.对于上下文,它是一个Flask应用程序,所有视图共享同一个session对象.

engine = create_engine("mysql+pymysql://root:root@127.0.0.1/my_database")

make_session = sessionmaker(bind=engine, autocommit=False)

session = ScopedSession(make_session)()
Run Code Online (Sandbox Code Playgroud)

当应用程序被拆除时,它将session被关闭并被engine丢弃

session.close()
engine.dispose()
Run Code Online (Sandbox Code Playgroud)

但根据数据库日志,我仍然有很多错误[Warning] Aborted connection 940 to db: 'master' user: 'root' host: '172.19.0.7' (Got an error reading communication packets).

我已经尝试了一些解决方案,包括电话gc.collect()engine.pool.dispose()但没有成功...

我怀疑场景后引擎仍然打开了一些连接,需要关闭它们.无论如何列出引擎打开的所有会话/连接?

花了很多时间在这上面,任何建议/帮助/指针将非常感谢!谢谢.

PS:disposeclose调用的灵感来自于如何在MySQL中关闭sqlalchemy连接.顺便问一下,什么是"签出"连接?

python mysql sqlalchemy flask

9
推荐指数
2
解决办法
2210
查看次数

SQLAlchemy如何跟踪数据库更改?

我想知道SQLAlchemy如何跟踪SQLAlchemy之外的更改(例如手动更改)?

到目前为止,我曾经db.session.commit()在每个可以在SQLAlchemy之外更改的值之前放置.这是一种不好的做法吗?如果是的话,是否有更好的方法来确保我拥有最新价值?我实际上在下面创建了一个小脚本来检查它,显然,SQLAlchemy可以检测外部更改,而db.session.commit()不是每次调用.

谢谢,

PS:我真的想了解SQLAlchemy工作背后的所有魔法是如何发生的.有没有人指向一些文档解释SQLAlchemy的幕后工作?

import os

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# Use SQLlite so this example can be run anywhere.
# On Mysql, the same behaviour is observed
basedir = os.path.abspath(os.path.dirname(__file__))
db_path = os.path.join(basedir, "app.db")
app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite:///' + db_path
db = SQLAlchemy(app)


# A small class to use in the test
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100))


# Create all the tables and a fake …
Run Code Online (Sandbox Code Playgroud)

python orm sqlalchemy flask flask-sqlalchemy

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

使用crashmail通过smtp发送电子邮件

我正在尝试通过使用crashmail在进程更改supervisord状态时设置电子邮件发送.对于需要大量设置的默认程序没有运气,我决定使用Python中的一个小脚本,使用SMTP发送电子邮件.sendmail

对于第一次状态更改,这非常有效(我确实收到了一封电子邮件,说明进程状态发生了变化),但之后又停止了工作.我曾试图改变不同的选项supervisord,如buffer_sizeautorestart,但它没有任何效果.

这是我用来触发supervisord状态更改的脚本:

import time

from datetime import datetime

if __name__ == '__main__':
    print(">>>>> STARTING ...", flush=True)
    while True:
        print("sleep now:", datetime.utcnow(), flush=True)
        time.sleep(30)
        raise Exception("meo meo")
Run Code Online (Sandbox Code Playgroud)

这是通过Gmail发送电子邮件的脚本.这个将发送stdin.

#!/usr/bin/env python

import smtplib


def get_server():
    smtpserver = smtplib.SMTP('smtp.gmail.com:587')
    smtpserver.ehlo()
    smtpserver.starttls()
    smtpserver.login("user@gmail.com", "password")
    return smtpserver


if __name__ == '__main__':
    import sys

    data = sys.stdin.read()

    s = get_server()
    s.sendmail('from@gmail.com', ['myemail@fitle.com'], data)
    s.quit()
Run Code Online (Sandbox Code Playgroud)

这是我的 supervisord.conf

[eventlistener:crashmail]
command=crashmail -a -m …
Run Code Online (Sandbox Code Playgroud)

python email sendmail supervisord

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

如何在Flask中处理长SQL查询?

我有一个FlaskWeb应用程序,可能需要通过Sqlalchemy给定的用户输入执行一些繁重的SQL查询.我想为查询设置超时,假设为20秒,因此如果查询超过20秒,服务器将向用户显示错误消息,以便他们可以稍后再尝试或使用较小的输入.

我已尝试使用Flask开发服务器和Gunicorn的两个multiprocessingthreading模块都没有成功:服务器保持阻塞并且不返回任何错误消息.您将在下面找到代码的摘录.

如何以用户友好的方式处理Flask中的慢速SQL查询?

谢谢.

from multiprocessing import Process

@app.route("/long_query")
def long_query():
    query = db.session(User)

    def run_query():
        nonlocal query
        query = query.all()

    p = Process(target=run_query)
    p.start()

    p.join(20) # timeout of 20 seconds
    if p.is_alive():
        p.terminate()
        return render_template("error.html", message="please try with smaller input")

    return render_template("result.html", data=query)
Run Code Online (Sandbox Code Playgroud)

python mysql sqlalchemy web-applications flask

2
推荐指数
1
解决办法
1305
查看次数