背景:我正在使用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)