jjzjj

带有 celery 的 Python Flask 在应用程序上下文之外

我正在使用pythonFlask构建一个网站。一切顺利,现在我正在尝试实现celery。在我尝试使用celery中的flask-mail发送电子邮件之前,一切都很顺利。现在我收到“在应用程序上下文之外工作”错误。完整的回溯是Traceback(mostrecentcalllast):File"/usr/lib/python2.7/site-packages/celery/task/trace.py",line228,intrace_taskR=retval=fun(*args,**kwargs)File"/usr/lib/python2.7/site-packages/celery/t

带有 celery 的 Python Flask 在应用程序上下文之外

我正在使用pythonFlask构建一个网站。一切顺利,现在我正在尝试实现celery。在我尝试使用celery中的flask-mail发送电子邮件之前,一切都很顺利。现在我收到“在应用程序上下文之外工作”错误。完整的回溯是Traceback(mostrecentcalllast):File"/usr/lib/python2.7/site-packages/celery/task/trace.py",line228,intrace_taskR=retval=fun(*args,**kwargs)File"/usr/lib/python2.7/site-packages/celery/t

python - 从 celery 中撤销任务

我想明确地从celery中撤销一个任务。这就是我目前正在做的:-fromcelery.task.controlimportrevokerevoke(task_id,terminate=True)其中task_id是string(也尝试将其转换为UUIDuuid.UUID(task_id).hex)。在上述过程之后,当我再次启动celeryceleryworker-Aproj它仍然使用相同的消息并开始处理它。为什么?当通过flower查看时,消息仍然存在于代理部分。如何删除消息使其无法再次使用? 最佳答案 revoke是如何工作的?当

python - 从 celery 中撤销任务

我想明确地从celery中撤销一个任务。这就是我目前正在做的:-fromcelery.task.controlimportrevokerevoke(task_id,terminate=True)其中task_id是string(也尝试将其转换为UUIDuuid.UUID(task_id).hex)。在上述过程之后,当我再次启动celeryceleryworker-Aproj它仍然使用相同的消息并开始处理它。为什么?当通过flower查看时,消息仍然存在于代理部分。如何删除消息使其无法再次使用? 最佳答案 revoke是如何工作的?当

python - 有什么办法可以非暴力地停止 celery worker 的特定任务吗?

作为celerydocumentation声明,已经执行的任务不会通过调用.revoke()中止,除非设置了terminate=True。但不推荐这样做,因为它会杀死worker本身,而worker可能已经开始了另一个任务。这是否意味着没有可靠、稳定的方法来做到这一点?编辑:celery.contrib.abortable不适合我,因为正如文档所述,它仅适用于数据库后端。 最佳答案 正在运行的任务是worker的正在运行的子进程(当使用prefork时),这意味着中止任务的唯一方法是杀死正在运行它的子进程。您可以尝试自己实现撤销事件

python - 有什么办法可以非暴力地停止 celery worker 的特定任务吗?

作为celerydocumentation声明,已经执行的任务不会通过调用.revoke()中止,除非设置了terminate=True。但不推荐这样做,因为它会杀死worker本身,而worker可能已经开始了另一个任务。这是否意味着没有可靠、稳定的方法来做到这一点?编辑:celery.contrib.abortable不适合我,因为正如文档所述,它仅适用于数据库后端。 最佳答案 正在运行的任务是worker的正在运行的子进程(当使用prefork时),这意味着中止任务的唯一方法是杀死正在运行它的子进程。您可以尝试自己实现撤销事件

python - 具有相同 RabbitMQ 代理后端进程的多个 Celery 项目

我如何使用两个不同的celery项目来消耗来自单个RabbitMQ安装的消息。通常,如果我为它们使用不同的rabbitmq,这些脚本可以正常工作。但是在生产机器上,我需要为他们共享相同的RabbitMQ后端。注意:由于某些限制,我无法在现有项目中合并新项目,因此这将是两个不同的项目。 最佳答案 RabbitMQ有能力创建称为virtual的虚拟消息代理主机或虚拟主机。每个本质上都是一个带有自己队列的迷你RabbitMQ服务器。这使您可以安全地将一个RabbitMQ服务器用于多个应用程序。rabbitmqctladd_vhost命令创

python - 具有相同 RabbitMQ 代理后端进程的多个 Celery 项目

我如何使用两个不同的celery项目来消耗来自单个RabbitMQ安装的消息。通常,如果我为它们使用不同的rabbitmq,这些脚本可以正常工作。但是在生产机器上,我需要为他们共享相同的RabbitMQ后端。注意:由于某些限制,我无法在现有项目中合并新项目,因此这将是两个不同的项目。 最佳答案 RabbitMQ有能力创建称为virtual的虚拟消息代理主机或虚拟主机。每个本质上都是一个带有自己队列的迷你RabbitMQ服务器。这使您可以安全地将一个RabbitMQ服务器用于多个应用程序。rabbitmqctladd_vhost命令创

python - 打包在 requirements.txt 中,但在 docker 中看不到

我有有效的requirements.txt文件,但docker没有安装requirements中列出的包之一Docker版本18.09.2python3.7.3需求.txtdjango==2.2.2celery==4.2.1selenium==3.141.0BeautifulSoup4==4.7.1redis==3.2.0docker文件FROMpython:3.7ENVPYTHONUNBUFFERED1ENVDJANGO_ENVdevENVDJANGO_ENVdevCOPY./requirements.txt/code/requirements.txtRUNpip3install--

python - 打包在 requirements.txt 中,但在 docker 中看不到

我有有效的requirements.txt文件,但docker没有安装requirements中列出的包之一Docker版本18.09.2python3.7.3需求.txtdjango==2.2.2celery==4.2.1selenium==3.141.0BeautifulSoup4==4.7.1redis==3.2.0docker文件FROMpython:3.7ENVPYTHONUNBUFFERED1ENVDJANGO_ENVdevENVDJANGO_ENVdevCOPY./requirements.txt/code/requirements.txtRUNpip3install--