Как сделать асинхронный скрипт проверки онлайна у серверов Minecraft?
Мне нужно, что бы каждые 5 минут выполнялся скрипт проверки онлайна у серверов Minecraft. Сейчас скрипт выполняет query запрос к серверу и сохраняет в бд онлайн одного сервера, только при заходе на страницу сервера. Посоветуйте, как реализовать асинхронный(фоновый для пользователя) скрипт проверки онлайна для всех серверов views.py
class NewsDetailView(DetailView):
model = Servers
template_name = 'server/server_detail.html'
def get_context_data(self, **kwards):
ctx = super(NewsDetailView, self).get_context_data(**kwards)
ctx['title'] = Servers.objects.filter(pk=self.kwargs['pk']).first()
return ctx
queryset = Servers.objects.all()
def get_object(self):
obj = super().get_object()
try:
server = MinecraftServer.lookup(obj.ip)
status = server.status()
try:
obj.num_players = status.players.online
obj.max_players = status.players.max
except:
print('[Error] Server', str(obj.ip), 'not available')
obj.num_players = 0
obj.max_players = 0
obj.save()
except:
pass
return obj
Ответы (1 шт):
Автор решения: inzem77
→ Ссылка
- Используй celery
- Напиши management команду и засунь эту команду в крон