我有芹菜任务,触发了一些子任务。它运行那些非同步的子任务。
count
由于某些原因,当子任务@shared_task
def task_update_all_customers(customer_ids=()):
job = group(
task_update_customer.subtask((cust_id, ))
for cust_id in customer_ids
)
result = job.apply()
all_completed = result.ready()
return all_completed
@shared_task
def task_update_customer(customer_id):
with session_scope() as session:
num = (
session.query(SomeModel)
.filter(SomeModel.customer_id == customer_id)
.statement.with_only_columns([func.count()]).order_by(None).scalar()
)
print(num)
执行时,它会在sqlalchemy查询中引发:
UnboundExecutionError`:此AnnotatedSelect对象不是直接的 绑定到Connection或Engine.Use的.execute()方法 连接或引擎来执行此构造。
但是我正在使用def task_update_customer
,而且我还对“task_update_customer”进行了完整的集成测试,该测试按预期工作。
以下session_scope
实施:https://pastebin.com/p7DRvkFs
为什么会这样?
答案 0 :(得分:0)
将我的查询更改为“修复”
num = (
session.query(SomeModel)
.filter(SomeModel.customer_id == customer_id)
.count()
)