我有一个基于烧瓶的 API 在我的服务器上的虚拟环境中运行。我希望我的 API 能够调用 celery 任务,但是 Celery 已安装并且已经在运行 API 的虚拟环境之外用于其他目的。如何导入我的任务模块,以便它可以在 virtualenv 内部使用.
对不起,如果这是一个愚蠢的问题,使用 Virtualenv 对我来说是新的。
我有一个基于烧瓶的 API 在我的服务器上的虚拟环境中运行。我希望我的 API 能够调用 celery 任务,但是 Celery 已安装并且已经在运行 API 的虚拟环境之外用于其他目的。如何导入我的任务模块,以便它可以在 virtualenv 内部使用.
对不起,如果这是一个愚蠢的问题,使用 Virtualenv 对我来说是新的。
您只需要安装在 virtualenv 中加载“任务”模块所需的依赖项(例如pip install celery
)。
发送任务的行为与 virtualenv 并没有真正的关系,它只需要与正确的代理 URL 进行通信(但是,当使用 Django 数据库作为代理时,这可能会有点复杂)。
事实上,您也可以轻松地按名称发送任务:
$ python
>>> from celery import Celery
>>> Celery(broker='amqp://').send_task('tasks.add', (2, 2))
所以代理是唯一需要的通信点,但是 tasks.py 模块和 Celery 应用程序可以包含影响任务发送方式的配置(比如路由到不同的队列,设置默认队列名称和队列+任务配置等)。