Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为我的flask应用程序为在线用户创建rq工作人员?(使用redis服务器)_Python_Flask_Redis - Fatal编程技术网

Python 如何为我的flask应用程序为在线用户创建rq工作人员?(使用redis服务器)

Python 如何为我的flask应用程序为在线用户创建rq工作人员?(使用redis服务器),python,flask,redis,Python,Flask,Redis,我对rq员工的工作方式感到困惑!我创建了一个flask web应用程序,它在redis服务器上运行后台进程,然后返回结果。到目前为止,在开发过程中,我一直在使用命令行在我的机器上启动rq工作进程。然而,现在我准备在线启动我的应用程序。但是当远程用户试图在线运行应用程序时,工作人员在哪里托管 我尝试在我的代码中使用with Connection():直接启动它们,虽然成功了,但它也中断了启动web应用程序在我的浏览器中运行的过程 谢谢你的帮助 编辑:为了使我的问题更具体,我在我的机器上使用命令行启

我对rq员工的工作方式感到困惑!我创建了一个flask web应用程序,它在redis服务器上运行后台进程,然后返回结果。到目前为止,在开发过程中,我一直在使用命令行在我的机器上启动rq工作进程。然而,现在我准备在线启动我的应用程序。但是当远程用户试图在线运行应用程序时,工作人员在哪里托管

我尝试在我的代码中使用
with Connection():
直接启动它们,虽然成功了,但它也中断了启动web应用程序在我的浏览器中运行的过程

谢谢你的帮助

编辑:为了使我的问题更具体,我在我的机器上使用命令行启动了一个rq worker,但是当我在远程redis服务器(托管在AWS EC2上)上启动任务时,应用程序会暂停,并且没有worker活动。我的rq工作人员的配置是否有问题,或者我是否应该以其他方式启动他们?我所做的就是
导入rq
,然后运行
rq worker simulator
,这对于本地开发来说已经足够了;如果有需要更改的配置,是否在命令行中进行更改


编辑2:我让它工作了。我只需要运行
rq工作者模拟器--url{ec2 address}
。感谢Paul Becotte的解释,为我指明了正确的方向。

一般来说,对于任务队列(我对rq只略知一二-请原谅我缺乏细节,但不认为这里有必要),想法是将工作从请求/响应周期中分离出来。您不希望请求耗时30秒-尤其是当您有其他请求时

在这个世界上,您有一个状态源(redis)和一堆使用它的客户机。用户连接到api以发送请求。您的api连接到状态源。为此,可能有两个端点-启动任务和检查状态。您的api向发布/订阅发送一条关于“启动任务”的消息,并在调用check status时查找该任务的结果

您还可以启动X工作进程。他们连接到redis和订户。当一个任务进入时,一个工人拿起它并处理它,然后将结果发布回redis。您运行了足够多的这些进程,以保持总的周期时间与您的流量低


您根本不在任何Worker或api端点中存储任何状态,因此您可以水平扩展它们——在任意多台机器上启动任意多个状态。然后,您只需要维护您的redis服务器-确保它稳定且已备份,以及所有内容(您也可以对redis进行群集并获得HA,但这是一个较长的讨论)。

非常感谢您的澄清。果然,当我让redis服务器运行时,我的工作人员没有与它进行正确的通信,但您的回答为我指明了正确的故障排除方向。我想我需要确保工作人员使用的服务器连接定义正确。非常感谢如果重新打开此问题,请将“编辑2”中的解决方案移至答案。