弹道导弹
mbq.atomiq的Python项目详细描述
安装
$ pip install mbq.atomiq
开始
- 在django应用程序的设置中添加mbq.atomiq到已安装的应用程序
- 将特定设置添加到同一设置文件中。这些用于度量。
ATOMIQ={'env':CURRENT_ENV,'service':YOUR_SERICE_NAME,}
- 为应用程序所需的每个队列类型设置使用者。mbq.atomiq为此提供了一个方便的管理命令:
python -m manage atomic_run_consumer --queue sns python -m manage atomic_run_consumer --queue sqs python -m manage atomic_run_consumer --queue celery
注意,atomiq将使用芹菜任务name属性导入并调用该任务。默认情况下,芹菜将任务名称设置为path.to.task.module.task_function_name。重写任务的名称将导致atomiq中断,所以plz不会这样做。
为了确保我们没有保留成功执行或删除的任务,我们还有一个清理管理命令,默认情况下,该命令将清理所有超过30天的已处理任务。可以覆盖该默认值。
python -m manage atomic_cleanup_old_tasks or python -m manage atomic_cleanup_old_tasks --days N or python -m manage atomic_cleanup_old_tasks --minutes N
- 使用它!
importmbq.atomiqmbq.atomiq.sns_publish(topic_arn,message)mbq.atomiq.sqs_publish(queue_url,message)mbq.atomiq.celery_publish(celery_task,*task_args,**task_kwargs)
测试
测试自动位于Travis CI https://travis-ci.org/managedbyq/mbq.atomiq,但也可以使用docker-compose在本地运行测试。 我们现在使用tox在多个python环境中进行本地测试。在此之前,请使用pyenv安装以下Python解释器:cpython{2.7、3.5、3.6}和pypy3
$ docker-compose up py36-pg|py36-mysql|py37-pg|py37-mysql
其他服务中的测试
在其他服务中使用atomiq时,我们不想模拟atomiq的发布函数。这是因为atomiq包含了检查所有使用都包装在事务中的功能,并且可以解释django在测试用例中添加的事务。为了允许您测试预期的任务是否已添加到队列中,我们公开了一个测试实用程序模块。
发布新版本
- 在__version__.py
- 转到github中的Releases并“起草新版本”
- 创建新版本后,travis ci将获取新版本并将其发送到pypi