Django Celery:函数仅在True While循环中运行一次

时间:2019-01-14 01:06:37

标签: python django celery

背景:我正在使用celery在django环境中运行python脚本,以使用树莓派测量称重传感器的重量。我正在测量一瓶水,它会将信息中继到Web服务器。

下面的python代码在celery之外的python环境中运行时可以完美运行,但是当它是由celery worker运行时,while循环中hx.get_weight(5)函数的值在第一次迭代后就不会改变。

此代码运行良好,并且每当hx.get_weight(5)未由芹菜工作者运行时,它每次都会返回一个不同的值(重量在变化)。所以,我相信是芹菜引起了这个问题。

import RPi.GPIO as GPIO
import time
import sys
from .hx711 import HX711, L287

app = Celery('robobud', broker='redis://localhost:6379/0')
log = logging.getLogger(__name__)

@app.task
async def pump(program_id, amount1, amount2):

    def cleanAndExit():
        print ("Cleaning...")
        GPIO.cleanup()
        print ("Bye!")
        sys.exit()

    ### Weight Class
    hx = HX711(5, 6 )
    hx.set_reading_format("LSB", "MSB")
    hx.set_reference_unit(112)
    hx.reset()
    hx.tare()



    ### Weight
    while True:
        try:

            val = hx.get_weight(5)
            print val

            hx.power_down()
            hx.power_up()
            time.sleep(1)

0 个答案:

没有答案