小编Jac*_*cob的帖子

在Flask App中启动后台后台程序

因此,我正在构建一个长期运行的查询Web应用程序以供内部使用。

我的目标是拥有一个带有守护进程的flask应用程序,该守护进程在服务器启动时启动,它将更新全局字典对象。

我不一定要发布任何示例代码,因为我尝试了许多方法,但都没有成功。

守护程序将创建一个线程池(multiprocessing.Pool)以遍历所有数据库实例,并对它们运行几个查询。

看来,无论我如何尝试实施(现在,使用flask开发服务器),它都将锁定应用程序,并且在运行时无法执行任何其他操作。我曾尝试阅读大量文档,但通常还是会假设很多其他知识,但最终我不知所措。

我想知道是否有人可以提供一些指导,即使是在我可以找到的地方,因为我到处搜索了“烧瓶启动例程”和类似的东西,但没有发现任何用处。看来,当我将其部署到服务器上时,也许可以在.wsgi文件中定义一些启动守护程序,但是在那之前还有什么方法可以在本地执行此操作?当我将其推出以用于一般用途时,这甚至是正确的方法吗?

否则,我只是在考虑建立一个cron作业,该作业连续运行一个python脚本来执行我需要的查询,然后转储到MongoDB实例或其他东西,以便客户端可以从中进行提取(就像执行所有查询一样)在Flask应用程序的服务器端只是锁定了服务器,因此无法执行其他操作-aka:无法对信息采取行动,杀死spids等)

任何帮助都将极大地帮助我,我的大脑已经旋转了好几天。

from flask import Flask
from celery import Celery

app = Flask(__name__)
app.config['CELERY_BROKER_URL'] = 'amqp://guest@localhost//'
app.config['CELERY_RESULT_BACKEND'] = 'amqp://guest@localhost//'

celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)

output = 0

@app.before_first_request
def init():
    task = my_task.apply_async()

@app.route('/')
def hello_world():
    global output
    return 'Hello World! - ' + str(output)


@celery.task
def my_task():
    global output
    result = 0
    for i in range(100):
        result += i
        output = result




if __name__ == '__main__':
    app.run()
Run Code Online (Sandbox Code Playgroud)

python flask python-multiprocessing

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

读取 .sql 文件以在 Python 中执行 (pymysql)

我正在尝试创建一个多脚本工具,它将采用 .sql 文件的参数并执行它。

我已经设置了一个简单的测试,仅在一个数据库上执行,但是语法每次都会给我带来问题。

DELIMITER $$
CREATE DEFINER=`a_user`@`%` PROCEDURE `a_procedure`(
    IN DirectEmployeeID TEXT,
    IN StartRange DATE,
    IN EndRange DATE
)
BEGIN
SELECT aColumn
WHERE thisThing = 1;
END$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

需要明确的是,该脚本已经过测试,并且在通过时可以正常工作,如下所示:

mysql -uuser -p -hhost -Pport databaseName < file.sql
Run Code Online (Sandbox Code Playgroud)

也可以通过 mysql 工作台工作。

我在另一个网站上看到了这种类型的解决方案:

with conn.cursor() as cursor:
    f = sys.argv[1]
    file = open(f, 'r')
    sql = " ".join(file.readlines())
    cursor.execute(sql)
Run Code Online (Sandbox Code Playgroud)

这给了我一个 MySQL 语法错误:

pymysql.err.ProgrammingError: (1064, u"You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL …
Run Code Online (Sandbox Code Playgroud)

python mysql pymysql

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

执行引用PyMSSQL链接服务器的存储过程时出错

我正在尝试通过pymssql从python脚本执行与链接服务器通信的存储过程。手动运行时,SP可以工作,但是从python脚本运行时,出现以下错误:

(7391, 'The operation could not be performed because OLE DB 
provider"SQLNCLI11" for linked server "DBLOG" was unable to begin a 
distributed transaction.DB-Lib error message 20018, severity 16:
\nGeneral SQL Server error: Check messages from the SQL Server\n')
Run Code Online (Sandbox Code Playgroud)

我还没有找到任何在pymssql本身中引用此限制的内容。我不太确定从哪里开始。我使用pymssql做了大量工作,并且从未遇到任何连接问题,并且我已经验证了我使用的登录名具有足够的权限(甚至尝试使用SA)。

有任何想法吗?

谢谢!

python sql-server pymssql

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