Hier sind meine Cluster-Einstellungen:
Code: Select all
Q_CLUSTER = {
'name': 'qcluster',
'workers': 4,
'threads': 1,
'recycle': 500,
'timeout': 30,
'retry': 300,
'max_attempts': 3,
'queue_limit': 8,
'bulk': 1,
'save_limit': 10000,
'orm': 'default',
'sync': bool(IS_TEST),
}
Berichte – Artikel: viele-zu-viele
Artikel – Treffer: eins-zu-viele
Code: Select all
def map_report(report_id: int) -> str:
"""Map report to item."""
logger.warning('Starting map report: (%s)', report_id)
report = Report.objects.get(pk=report_id)
item = matcher(report)
Hit.increment_item_hits(item=item)
logger.warning('Finished map report: (%s)', report_id)
return f'Item id: {item.pk}'
Ich rufe dies dann mit auf
Code: Select all
for report in Report.objects.all():
async_task(map_report, report_id=report.pk)
Auch wenn ich es synchron ausführe, erhalte ich die korrekte Anzahl an Treffern, aber asynchron führt dazu, dass die Treffer größer sind als erwartet, da „map_reports“ zu oft aufgerufen wird.
Ich habe ähnliche Probleme gesehen, wo die Lösung war Ich möchte die Wiederholungseinstellung des Clusters erhöhen, aber ich glaube, ich habe sie so eingerichtet, dass die Aufgabe definitiv eine Zeitüberschreitung aufweist, bevor sie erneut versucht wird.
Mobile version