支持edx电子商务服务运营的芹菜任务
edx-ecommerce-worker的Python项目详细描述
本文中包含的芹菜任务用于实现异步订单履行和需要异步执行许多小的、常见操作的其他功能。
先决条件
- python 2.7.x(未使用python 3.x进行测试)
- 芹菜3.1.x
- 拉比特mq 3.5.x
开始
开发和运行此应用程序所需的大多数命令都可以在包含的makefile中找到。这些指令假定edX ecommerce service和lms之间的工作集成,并在电子商务服务上配置异步实现。
要开始,请创建一个新的虚拟环境并安装包含的要求。
$ make requirements
此项目使用Celery异步执行任务,例如订单履行期间所需的任务。芹菜需要一个发送和接收消息的解决方案,这些消息通常以称为消息代理的单独服务的形式出现。此项目使用RabbitMQ作为消息代理。在OS X上,使用自制程序安装它。
$ brew install rabbitmq
默认情况下,大多数操作系统不允许为消息代理打开足够的文件。rabbitmq的文档表明,对于大多数开发工作负载来说,至少允许4096个文件描述符就足够了。检查当前进程中文件描述符的数量限制。
$ ulimit -n
如果需要调整,请运行:
$ ulimit -n 4096
接下来,启动rabbitmq服务器。
$ rabbitmq-server
在另一个过程中,启动芹菜工人。
$ make worker
在第三个过程中,启动电子商务服务。为了使任务对电子商务工作者可见,电子商务服务和电子商务工作者必须共享芹菜的BROKER_URL设置值。
最后,在第四个过程中,启动lms。此时,如果您尝试注册由电子商务服务支持的课程,则电子商务工作人员将异步处理注册。
如果您被迫提前关闭芹菜工人,任务可能会留在队列中。要清除它们,可以重置rabbitmq。
$ rabbitmqctl stop_app $ rabbitmqctl reset $ rabbitmqctl start_app
许可证
除非另有说明,否则此存储库中的代码是根据agpl授权的。有关详细信息,请参见LICENSE.txt。
如何贡献
欢迎捐款。详情请阅读How To Contribute。尽管它是用edx-platform编写的,但是对于开放的edx代码,通常应该遵循这些指导原则。
报告安全问题
请不要公开报告安全问题。请发电子邮件给security@edx.org。
邮件列表和IRC频道
您可以在edx-code Google Group或freenode上的#edx-codeirc通道中讨论此代码。