mirror of
https://github.com/RoboSats/robosats.git
synced 2025-02-07 13:59:06 +00:00
Improve handling of long in_transition htlcs
This commit is contained in:
parent
ee8becebd9
commit
025d975b6c
24
api/tasks.py
24
api/tasks.py
@ -1,7 +1,7 @@
|
|||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
|
|
||||||
|
|
||||||
@shared_task(name="users_cleansing")
|
@shared_task(name="users_cleansing", time_limit=600)
|
||||||
def users_cleansing():
|
def users_cleansing():
|
||||||
"""
|
"""
|
||||||
Deletes users never used 12 hours after creation
|
Deletes users never used 12 hours after creation
|
||||||
@ -47,7 +47,7 @@ def users_cleansing():
|
|||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
@shared_task(name="give_rewards")
|
@shared_task(name="give_rewards", time_limit=180)
|
||||||
def give_rewards():
|
def give_rewards():
|
||||||
"""
|
"""
|
||||||
Referral rewards go from pending to earned.
|
Referral rewards go from pending to earned.
|
||||||
@ -74,7 +74,7 @@ def give_rewards():
|
|||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
@shared_task(name="follow_send_payment")
|
@shared_task(name="follow_send_payment", time_limit=180)
|
||||||
def follow_send_payment(hash):
|
def follow_send_payment(hash):
|
||||||
"""Sends sats to buyer, continuous update"""
|
"""Sends sats to buyer, continuous update"""
|
||||||
|
|
||||||
@ -108,7 +108,7 @@ def follow_send_payment(hash):
|
|||||||
print(f"Order: {order.id} Payout is larger than collateral !?")
|
print(f"Order: {order.id} Payout is larger than collateral !?")
|
||||||
return
|
return
|
||||||
|
|
||||||
def handle_response(response):
|
def handle_response(response, was_in_transit=False):
|
||||||
lnpayment.status = LNPayment.Status.FLIGHT
|
lnpayment.status = LNPayment.Status.FLIGHT
|
||||||
lnpayment.in_flight = True
|
lnpayment.in_flight = True
|
||||||
lnpayment.save()
|
lnpayment.save()
|
||||||
@ -124,6 +124,14 @@ def follow_send_payment(hash):
|
|||||||
if response.status == 1: # Status 1 'IN_FLIGHT'
|
if response.status == 1: # Status 1 'IN_FLIGHT'
|
||||||
print(f"Order: {order.id} IN_FLIGHT. Hash {hash}")
|
print(f"Order: {order.id} IN_FLIGHT. Hash {hash}")
|
||||||
|
|
||||||
|
# If payment was already "payment is in transition" we do not
|
||||||
|
# want to spawn a new thread every 3 minutes to check on it.
|
||||||
|
# in case this thread dies, let's move the last_routing_time
|
||||||
|
# 20 minutes in the future so another thread spawns.
|
||||||
|
if was_in_transit:
|
||||||
|
lnpayment.last_routing_time = timezone.now() + timedelta(minutes=20)
|
||||||
|
lnpayment.save()
|
||||||
|
|
||||||
if response.status == 3: # Status 3 'FAILED'
|
if response.status == 3: # Status 3 'FAILED'
|
||||||
lnpayment.status = LNPayment.Status.FAILRO
|
lnpayment.status = LNPayment.Status.FAILRO
|
||||||
lnpayment.last_routing_time = timezone.now()
|
lnpayment.last_routing_time = timezone.now()
|
||||||
@ -195,7 +203,7 @@ def follow_send_payment(hash):
|
|||||||
for response in LNNode.routerstub.TrackPaymentV2(
|
for response in LNNode.routerstub.TrackPaymentV2(
|
||||||
request, metadata=[("macaroon", MACAROON.hex())]
|
request, metadata=[("macaroon", MACAROON.hex())]
|
||||||
):
|
):
|
||||||
handle_response(response)
|
handle_response(response, was_in_transit=True)
|
||||||
|
|
||||||
elif "invoice is already paid" in str(e):
|
elif "invoice is already paid" in str(e):
|
||||||
print(f"Order: {order.id} ALREADY PAID. Hash: {hash}.")
|
print(f"Order: {order.id} ALREADY PAID. Hash: {hash}.")
|
||||||
@ -213,7 +221,7 @@ def follow_send_payment(hash):
|
|||||||
print(str(e))
|
print(str(e))
|
||||||
|
|
||||||
|
|
||||||
@shared_task(name="payments_cleansing")
|
@shared_task(name="payments_cleansing", time_limit=600)
|
||||||
def payments_cleansing():
|
def payments_cleansing():
|
||||||
"""
|
"""
|
||||||
Deletes cancelled payments (hodl invoices never locked) that
|
Deletes cancelled payments (hodl invoices never locked) that
|
||||||
@ -275,7 +283,7 @@ def payments_cleansing():
|
|||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
@shared_task(name="cache_external_market_prices", ignore_result=True)
|
@shared_task(name="cache_external_market_prices", ignore_result=True, time_limit=120)
|
||||||
def cache_market():
|
def cache_market():
|
||||||
|
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
@ -313,7 +321,7 @@ def cache_market():
|
|||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
@shared_task(name="send_notification", ignore_result=True)
|
@shared_task(name="send_notification", ignore_result=True, time_limit=120)
|
||||||
def send_notification(order_id=None, chat_message_id=None, message=None):
|
def send_notification(order_id=None, chat_message_id=None, message=None):
|
||||||
|
|
||||||
if order_id:
|
if order_id:
|
||||||
|
Loading…
Reference in New Issue
Block a user