Denken Sie, es ist möglich, asyncio zu verwenden, um eine Aufgabe alle n Sekunden in Django auszuführen, so dass der Hauptprozess nicht blockiert wäre?Verwendung von asyncio periodische Aufgabe in Django
Etwas zum Beispiel, dass alle 5 min in der Konsole gedruckt würde, wie:
import asyncio
from random import randint
async def do_stuff(something, howmany):
for i in range(howmany):
print('We are doing {}'.format(something))
await asyncio.sleep(randint(0, 5))
if __name__ == '__main__':
loop = asyncio.get_event_loop()
work = [
asyncio.ensure_future(do_stuff('something', 5)),
]
loop.run_until_complete(asyncio.gather(*work))
Es scheint, dass django aufhören zu arbeiten, während die Schleife läuft. Auch wenn dies in der Entwicklung funktionieren kann, wie würde es sich verhalten, wenn die Site auf etwas wie Apache oder Gunicorn läuft?
Vielleicht wäre Multiprocessing eine Alternative? – Mikael