1
您認爲可以使用asyncio在django中每n秒運行一次任務,以便主進程不會被阻塞?使用asyncio在django中執行週期性任務
的東西,例如,將打印每5分鐘控制檯,如:
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))
看來,Django會導致循環停止運行時的工作。即使這可以在開發中工作,當網站在apache或gunicorn之類的網站上運行時它的行爲如何?
也許使用多處理將是一種替代? – Mikael