http_service/bugbug_http/worker.py (26 lines of code) (raw):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import sys
from urllib.parse import urlparse
from redis import Redis
from rq import Worker
from sentry_sdk.integrations.rq import RqIntegration
import bugbug_http.boot
from bugbug_http.sentry import setup_sentry
if os.environ.get("SENTRY_DSN"):
setup_sentry(dsn=os.environ.get("SENTRY_DSN"), integrations=[RqIntegration()])
def main():
# Bootstrap the worker assets
bugbug_http.boot.boot_worker()
# Provide queue names to listen to as arguments to this script,
# similar to rq worker
url = urlparse(os.environ.get("REDIS_URL", "redis://localhost/0"))
assert url.hostname is not None
redis_conn = Redis(
host=url.hostname,
port=url.port if url.port is not None else 6379,
password=url.password,
ssl=True if url.scheme == "rediss" else False,
ssl_cert_reqs=None,
)
qs = sys.argv[1:] or ["default"]
w = Worker(qs, connection=redis_conn)
w.work()
if __name__ == "__main__":
main()