Py学习  »  MQ

无法从kubernetes cron jobs连接rabbitmq

zero • 4 年前 • 1055 次点击  

我正在远程(cloudamqp.com)使用rabbitmq,并在kubernetes上创建cron作业。在我的本地计算机上,我的作业运行良好,kubernetes cronjob的调度非常好,但是作业将rabbitmq连接url重定向到 127.0.0.1:5672 我得到一个错误。

pika.exceptions.ConnectionClosed: Connection to 127.0.0.1:5672 failed: [Errno 111] Connection refused

我检查cron作业的日志,我的连接url很好,但是当pika试图连接到主机时,它会自动重定向到 127.0.0.1:5672 我们知道cron pod没有运行任何rabbitmq服务器,因此它拒绝连接。

克朗普

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: scrape-news
spec:
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            app: scrape-news
        spec:
          containers:
          - name: scrape-news
            image: SCRAPER_IMAGE
            imagePullPolicy: Always
          restartPolicy: Never
  schedule: '* * * * *'
  successfulJobsHistoryLimit: 3

RabbitMQ连接

    print(env.RABBIT_URL)
    self.params = pika.URLParameters(env.RABBIT_URL)
    self.connection = pika.BlockingConnection(parameters=self.params)
    self.channel = self.connection.channel() # start a channel

连接URL完全相同,可用于本地设置。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40349
 
1055 次点击  
文章 [ 1 ]  |  最新文章 4 年前
yomateo
Reply   •   1 楼
yomateo    5 年前

基于你的 CronJob spec不传递环境变量 RABBIT_URL .

您的代码看起来好像希望设置此变量,但实际上不是,这可能是它默认为 localhost .

self.params = pika.URLParameters(env.RABBIT_URL)

你可能想要这样的东西:

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: scrape-news
spec:
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        metadata:
          labels:
            app: scrape-news
        spec:
          containers:
          - name: scrape-news
            image: SCRAPER_IMAGE
            imagePullPolicy: Always
            env:
              - name: RABBIT_URL
                value: cloudamqp.com
          restartPolicy: Never
  schedule: '* * * * *'
  successfulJobsHistoryLimit: 3