Fix release from #1860 (hotfix #1934).

- Cron job to send weekly email report is processed multiple times. Review scheduling process to send to only one worker.
- Implement mechanism to ensure each email is sent only once to each recipient.
- Improve the way the async task is processed by creating a separate task for each organization, instead of processing all organizations in a single task.
posthog/celery.py
import os
import time
import redis
import statsd  
from celery import Celery
from celery.schedules import crontab
from django.conf import settings
from django.db import connection
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "posthog.settings")
app = Celery("posthog")
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()
app.conf.broker_pool_limit = 0
redis_instance = redis.from_url(settings.REDIS_URL, db=0)
ACTION_EVENT_MAPPING_INTERVAL_MINUTES = 10
statsd.Connection.set_defaults(host=settings.STATSD_HOST, port=settings.STATSD_PORT)
@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):