我有两个函数- async,它返回带有int值的协同程序对象,还有sync函数,它是@shared_task,其中变量必须存储来自async函数的值(int)
我的异步函数,返回包含int的协程:
async def club_count(club_id):
return get_number_of_club(club_id).get_clients_in_club_count(club_id)
我的同步函数shared_task在Django admin中创建了一个记录变量“club_load”必须存储来自我的异步函数的值但当我尝试运行celery 时,我在“procent_club_load”中得到了协程和int之间的操作错误
@shared_task
def get_club_load():
all_clubs = Club.objects.all()
for club in all_clubs:
if club.monitoring_club_load == True:
club_load = club_load_json(club.id)
club_capacity = club.club_load
procent_club_load = None
if club_capacity:
procent_club_load = int((club_load / club_capacity)*100)
club_load_record = ClubLoadModel(
club_id = club.id,
created_at = timezone.now(),
weekday = timezone.localtime().weekday() + 1,
club_load = club_load,
procent_club_load = procent_club_load
)
club_load_record.save()
else:
pass
有什么办法可以把协程对象的值执行到一个共享任务的同步函数的变量中?
我正尝试将异步函数中的一个值存储在synccelepie任务的变量中
第二个问题是,我试图用共享任务创建一个周期性任务,但是收到了sync函数中的协程对象的错误
1条答案
按热度按时间gdx19jrr1#
您可以使用
asgiref.sync.async_to_sync
:您可以运行: