Отправка данных очереди beanstalk в Mssql с использованием скрипта python

Ребята, я сейчас разрабатываю автономное решение ALPR.

До сих пор я использовал программное обеспечение OpenAlpr, работающее на Ubuntu. Используя скрипт Python, который я нашел в StackOverlFlow, я могу прочитать данные очереди beanstalk (номер и метаданные) ALPR, но мне нужно отправить эти данные из очереди beanstalk в базу данных mssql. Кто-нибудь знает, как экспортировать данные очереди beanstalk или данные JSON в базу данных? Приведенный ниже код предназначен для локального хоста, как мне изменить его для автоматической отправки данных в базу данных mssql? Данные в очереди beanstalk представлены в формате JSON [ключ=значение].

Я добавил файл csv для чтения и записи, чтобы посмотреть, можно ли сохранить данные json в формате csv на локальном диске

import beanstalkc
import json
from pprint import pprint

beanstalk = beanstalkc.Connection(host='localhost', port=11300)
TUBE_NAME='alprd'
text_file = open('output.csv', 'w')

# For diagnostics, print out a list of all the tubes available in Beanstalk.
print beanstalk.tubes()

# For diagnostics, print the number of items on the current alprd queue.
try:
    pprint(beanstalk.stats_tube(TUBE_NAME))
except beanstalkc.CommandFailed:
    print "Tube doesn't exist"

# Watch the "alprd" tube; this is where the plate data is.
beanstalk.watch(TUBE_NAME)


while True:

    # Wait for a second to get a job. If there is a job, process it and delete it from the queue.
    # If not, return to sleep.
    job = beanstalk.reserve(timeout=5000)
    if job is None:
        print "No plates yet"
    else:
        plates_info = json.loads(job.body)
    # Do something with this data (e.g., match a list, open a gate, etc.).
    # if 'data_type' not in plates_info:
        # print "This shouldn't be here... all OpenALPR data should have a data_type"
    # if plates_info['data_type'] == 'alpr_results':
        # print "Found an individual plate result!"
    if plates_info['data_type'] == 'alpr_group':
        print "Found a group result!"
        print '\tBest plate: {} ({:.2f}% confidence)'.format(
            plates_info['candidates'][0]['plate'], 
            plates_info['candidates'][0]['confidence'])
        make_model = plates_info['vehicle']['make_model'][0]['name']
        print '\tVehicle information: {} {} {}'.format(
            plates_info['vehicle']['year'][0]['name'],
            plates_info['vehicle']['color'][0]['name'],
            ' '.join([word.capitalize() for word in make_model.split('_')]))
    elif plates_info['data_type'] == 'heartbeat':
        print "Received a heartbeat"
        text_file.write('Best plate')
    # Delete the job from the queue when it is processed.

job.delete()
text_file.close()

person iwhd    schedule 07.02.2020    source источник
comment
stackoverflow.com/questions/ 30589571/ вам помочь?   -  person charles    schedule 07.02.2020


Ответы (1)


Насколько я знаю, нет возможности напрямую экспортировать данные из beanstalkd.

  • То, что у вас есть, имеет смысл, то есть потоковая передача данных из трубки в плоский файл или выполнение вставки напрямую в БД.
  • Учитывая, что beanstalkd IOPS может быть создан, это все же может быть разумным решением (зависит от того, какую производительность вы ожидаете).

Попробуйте задать вопрос https://groups.google.com/forum/#!forum/beanstalk-talk также

person user8222982    schedule 18.08.2020